我编写了gradle脚本,用于将模块发布为 Artifact 。我正在使用我们公司的内部Maven存储库。我执行
这是成功的。然后,我浏览了发布URL的网页,其中有pom.xml。
一切都还好。但是当我第二次执行此任务时,我发现它已经生成了另一个pom文件。看:
每次执行上传任务时,它将使用x.pom(x递增数字)生成新的pom文件。因此,存储库中将有很多pom.xml文件。
为什么会生成不同的名称pom文件?我做错什么了吗?
这是代码:
uploadArchives {
repositories {
mavenDeployer {
configurePOM(pom)
repository(url: "http://10.10.106.128:8081/nexus/content/repositories/releases/") {
authentication(userName: 'xxx', password: 'xxx')
}
snapshotRepository(url: "http://10.10.106.128:8081/nexus/content/repositories/snapshots") {
authentication(userName: 'xxx', password: 'xxx')
}
}
}
}
private configurePOM(def pom) {
pom.project {
groupId 'com.gaogao.android'
artifactId imageprocessor
String ver = "1.0.0." + “develop” + "-SNAPSHOT"
version ver
name 'com.gaogao.android'
packaging 'aar'
description "Lib For Android"
url "http://10.10.106.128:8081/nexus/content/groups/public/"
inceptionYear "2016"
developers {
developer {
id "android_team"
name "android_team"
email "android_team@xxx.com"
url "http://www.gaogao.com"
}
}
}
}
任何帮助将不胜感激。
最佳答案
SNAPSHOT是中间版本,直到您发布其中一个为止。 1.0.0-SNAPSHOT
将产生1.0.0
发布版本。因为您可以多次尝试使SNAPSHOT准备发布。仅1.0.0-SNAPSHOT
不足以标识 Artifact ,因此后缀被加上。
对于Maven(也许是gradle,不确定),有“总是更新SNAPSHOT依赖项”的选项,它会选择由后缀确定的最新(或最大)1.0.0-SNAPSHOT
。
如果您使用的是Sonatype Nexus或类似的工具,则这是负责后缀的工具,并且可能对其快照存储库有一些策略,可以在其中进行修改。您还可以(并且应该)在此调整对未使用的SNPASHOT Artifact 的清除(基于时间或其他)。
在发行版本中,后缀是被禁止的,或者至少不是一个好主意,因为这里的版本是唯一的。