Gradle是否将发布从Gradle 4.x迁移到5.x?

Gradle是否将发布从Gradle 4.x迁移到5.x?,gradle,publishing,Gradle,Publishing,如何将以下发布从gradle 4迁移到5 publishing { publications { foo(MavenPublication) { artifactId "foo" artifact jar pom.withXml { def dependenciesNode = asNode().appendNode('dependencies')

如何将以下发布从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+时,您必须将
发布{}
块括在
项目中

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')

         }
      }

    }
}
您可以找到:

在Gradle 4.8之前,发布{}块被隐式地处理,就好像它内部的所有逻辑都是在评估项目之后执行的一样。这让人困惑,因为它是唯一一个这样做的块。作为Gradle4.8中稳定化工作的一部分,我们反对这种行为,并要求所有用户迁移他们的构建


使用gradle 4.8+时,您必须将
发布{}
块括在
项目中

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')

         }
      }

    }
}
您可以找到:

在Gradle 4.8之前,发布{}块被隐式地处理,就好像它内部的所有逻辑都是在评估项目之后执行的一样。这让人困惑,因为它是唯一一个这样做的块。作为Gradle4.8中稳定化工作的一部分,我们反对这种行为,并要求所有用户迁移他们的构建