gpt4 book ai didi

gradle - 将Maven Artifactory 发布到具有不同 Artifactory ID的 Artifactory

转载 作者:行者123 更新时间:2023-12-03 05:24:12 26 4
gpt4 key购买 nike

Maven Publishing的新手。我们的团队已经开始使用Artifactory,我正在尝试找出如何发布到Artifactory,但使用的是自定义 Artifact ID。这是我的build.gradle文件的相关部分

def applicationName = 'example-api'
def applicationVersion = '1.0.0.1'
def group = 'com.example.api'
def archiveName = "${applicationName}##${applicationVersion}"

bootWar {
archiveFileName = "${archiveName}.war"
}

publishing {
publications {
mavenJava(MavenPublication) {
artifact(file("build/libs/${archiveName}.war"))
afterEvaluate {
artifactId archiveName
groupId group
version applicationVersion
}
}
}
}

artifactory {
contextUrl = "http://172.17.0.2:32447/artifactory"
publish {
repository {
repoKey = 'libs-release-local'
username = 'admin'
password = 'password1'
maven = true
}

defaults {
publications('mavenJava')
publishBuildInfo = true
publishArtifacts = true
publishPom = false
}

}

clientConfig.info.setBuildName(applicationName)
clientConfig.info.setBuildNumber(applicationVersion)
}

但是似乎从来没有与构建中生成的WAR文件同名。这是我最近得到的:

enter image description here

理想情况下,我希望将该 Artifact 仅称为“example-api ## 1.0.0.1.war”,因为它将被部署到Tomcat。

当我尝试删除groupId时,Artfactory似乎无法创建存储库URL,如果我省略版本,则 Artifact 名称为 example-api##1.0.0.1-unspecified.war
有什么想法吗?

最佳答案

您看到的是预期的行为。

Maven Artifact 名称严格为<artifactId>-<version>.<extension>
因此,当您按以下方式设置发布配置时:

  • artifactId = example-api##1.0.0.1
  • version = 1.0.0.1
  • extension = war

  • 结果是一个名为 example-api##1.0.0.1-1.0.0.1.war的 Artifact

    我强烈建议您从 artifactId部分删除该版本,以更好地与Maven约定保持一致。

    一种替代方法是使用 an Ivy repository,它在指定 Artifact 名称方面具有更大的灵活性。

    关于gradle - 将Maven Artifactory 发布到具有不同 Artifactory ID的 Artifactory ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62142668/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com