Gradle迁移从4.x迁移到5.x



如何将以下发布从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稳定工作的一部分,我们正在贬低这种行为,并要求所有用户迁移其构建。

最新更新