我编写了gradle脚本,用于将模块发布为工件。我正在使用我们公司的内部maven存储库。我执行
gradle uploadArchives
这是成功的。然后我浏览了发布网址的网页,pom.xml就在那里。
lib.core.imageprocessor-1.0.0.develop-20161025.140959-1.pom
一切都很好。但是当我第二次执行此任务时,我发现它生成了另一个pom文件。看:
lib.core.imageprocessor-1.0.0.develop-20161026.051357-2.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"
}
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
SNAPSHOTs是中间版本,直到您释放其中一个版本。 1.0.0-SNAPSHOT
将生成1.0.0
版本。因为您可以多次尝试让SNAPSHOT准备好发布。只有1.0.0-SNAPSHOT
不足以识别工件,因此它会被后缀化。
对于Maven(也许是gradle,不确定),可以选择"始终更新SNAPSHOT依赖关系",选择由后缀确定的最新(或最大)1.0.0-SNAPSHOT
是什么。
如果您使用的是Sonatype Nexus或类似的工具,那么这就是负责后缀的工具,并且可能有一些针对其snapshot-repo的策略,可以对其进行修改。您可以(也应该)在此处调整未使用的SNPASHOT工件的删除(基于时间或其他方式)。
在发布 - 回购中,后缀是被禁止的,或者至少不是一个好主意,因为这里的版本是唯一的。