将 Maven 工件发布到具有不同工件 ID 的工件
Publishing Maven artifact to artifactory with different artifact ID
Maven 发布的新手。我们的团队已经开始使用 Artifactory,我正在尝试弄清楚如何发布到它,但使用自定义工件 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 文件保持相同的名称。这是我得到的最接近的:
理想情况下,我希望将工件命名为 'example-api##1.0.0.1.war',因为它将部署到 Tomcat。
当我尝试删除 groupId 时,Artfactory 似乎无法创建 repo URL,如果我省略版本,则工件名称为 example-api##1.0.0.1-unspecified.war
有什么想法吗?
您看到的是预期的行为。
Maven 工件名称严格 <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
的工件
我强烈建议从 artifactId
部分删除版本,以便更好地与 Maven 约定保持一致。
另一种方法是使用 an Ivy repository,它在指定工件名称方面具有更大的灵活性。
Maven 发布的新手。我们的团队已经开始使用 Artifactory,我正在尝试弄清楚如何发布到它,但使用自定义工件 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 文件保持相同的名称。这是我得到的最接近的:
理想情况下,我希望将工件命名为 'example-api##1.0.0.1.war',因为它将部署到 Tomcat。
当我尝试删除 groupId 时,Artfactory 似乎无法创建 repo URL,如果我省略版本,则工件名称为 example-api##1.0.0.1-unspecified.war
有什么想法吗?
您看到的是预期的行为。
Maven 工件名称严格 <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
我强烈建议从 artifactId
部分删除版本,以便更好地与 Maven 约定保持一致。
另一种方法是使用 an Ivy repository,它在指定工件名称方面具有更大的灵活性。