我编写了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 的清除(基于时间或其他)。

在发行版本中,后缀是被禁止的,或者至少不是一个好主意,因为这里的版本是唯一的。

09-28 09:58
查看更多