如何将以下发布从gradle 4到5迁移?
publishing {
publications {
foo(MavenPublication) {
artifactId "foo"
artifact jar
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', 'mygroup')
dependencyNode.appendNode('artifactId', 'bar')
dependencyNode.appendNode('version', '1.0')
}
}
}
}
这适用于Gradle 4.5.1。但是对于Gradle 5.4.1,错误:
Execution failed for task ':publishFooPublicationToMavenLocal'.
> Failed to publish publication 'foo' to repository 'mavenLocal'
> Invalid publication 'foo': artifactId is not a valid Maven identifier ([A-Za-z0-9_-.]+).
带有Gradle 4.8 ,您必须将publishing{}
块包围在project.afterEvaluate
project.afterEvaluate {
publishing {
publications {
foo(MavenPublication) {
artifactId "foo"
artifact jar
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', 'mygroup')
dependencyNode.appendNode('artifactId', 'bar')
dependencyNode.appendNode('version', '1.0')
}
}
}
}
您可以在此处找到官方文档:
Grad 4.8之前,Publishing {}块被隐式地对待,好像在评估项目后其内部的所有逻辑都是执行的。这是令人困惑的,因为这是唯一这样的障碍。作为Gradle 4.8稳定工作的一部分,我们正在贬低这种行为,并要求所有用户迁移其构建。