maven Gradle发布自定义POM

5vf7fwbs  于 2022-11-02  发布在  Maven
关注(0)|答案(1)|浏览(275)

我已经编写了一个gradle任务,该任务将一个自定义pom写入“build/libs/pom.xml”
我想发布上面的自定义pom.xml,所以我定义了:

def pomXml = artifacts.add('archives', file("$buildDir/libs/pom.xml")) {
    builtBy('writePoms')   // writePoms is my custom task to create custom pom.xml
}

publishing {
  publications {
    maven(MavenPublication) {

        artifact pomXml
        artifactId "myartifact"
        groupId 'com.xyz'
        version project.version
    }
 }

repositories {
    // Task for manually publishing the maven image. When CI works, setup CI_TOKEN auth.
    maven {
        url <url>
        name "GitLab"
        credentials(HttpHeaderCredentials) {
            name = System.getenv("CI_JOB_TOKEN") ? "Job-Token" : "Private-Token"
            value = System.getenv("CI_JOB_TOKEN") ? System.getenv("CI_JOB_TOKEN") : gitLabPrivateToken
        }
        authentication {
            header(HttpHeaderAuthentication)
        }
    }
}

当我运行./gradlew publish时,它从“build/publications/maven/pom-default.xml”而不是“build/libs/pom.xml”发布pom
有人能帮助我如何实现它吗?

yeotifhr

yeotifhr1#

我也遇到过类似的问题(将多个外部存储库与它们自己的构建系统聚合构建,然后将这些构建的结果发布到一个本地工件)。
我能够通过withXml有效地将为“工件”出版物生成的POM替换为外部POM的内容:

pluginManager.withPlugin("maven-publish") {
    extensions.configure(PublishingExtension::class.java) {
        publications.register<MavenPublication>("artifacts") {
            groupId = "com.example"
            artifactId = "external"
            version = "1.0.0"

            artifact("external.jar")
            pom.withXml {
                asNode().setValue(XmlParser().parse("some/external/pom.xml").value())
            }
        }
    }
}

这使得<xml ...><project ...>节点保持不变(对于我的情况是可以接受的)。

相关问题