gradle maven-publish 插件添加时间戳,如何避免放入后缀

ima*_*088 7 java nexus gradle maven

我正在使用 gGradle 的“maven-publish”插件,它在实际版本之后添加了一个后缀,我想避免这种情况。因为在我的 CI 的下一步中,它尝试下载 .jar 并且 curl 命令没有下载任何内容。

我可以连接到我的 nexus 并通过上传,./gradlew publish Optional<VERSION=0.0.1>但插件(我认为)添加了一个时间戳,看起来像这样:

a/b/c/ARTIFACT-NAME/0.0.1-SNAPSHOT/ARTIFACT-NAME-0.0.1-20190114.134142-8.jar
Run Code Online (Sandbox Code Playgroud)

如何禁用插件中的时间戳功能?

这是我的发布任务:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            if (project.version.endsWith('-SNAPSHOT')) {
                url deployNexusSnapshotUrl
            } else {
                url deployNexusReleaseUrl
            }
            credentials {
                username = deployNexusUsername
                password = deployNexusPassword
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*cki 7

那是因为您要发布一个SNAPSHOT版本。这个时间戳是一个特性,它允许区分不同的快照构建,例如在有限的时间内使用它们并在以后清除它们。当您发布不使用-SNAPSHOT后缀的正确工件版本时,它不会发生。

为了 CI 构建的可重复性,SNAPSHOT在 CI 上构建软件时永远不要使用依赖项。SNAPSHOT版本可以被覆盖,特别是如果您禁用版本中的时间戳。

如果您的项目中没有代码更改,CI 构建是绿色的,但第二天有人覆盖了SNAPSHOT存储库中的依赖项并且构建现在是红色的怎么办?如果第二天你必须发布一个修补程序来解决紧急的生产问题,但你必须专注于新SNAPSHOT依赖项 引入的问题,该怎么办?

您正在尝试解决错误的问题。SNAPSHOT仅用于本地开发。

  • 你不回答问题。这个说法有争议:“当你在 CI 上构建软件时,你永远不应该使用 SNAPSHOT 依赖项。” 在我的组织中,无论如何,我们始终希望人们使用最新版本。将每个构建都保留在 Maven 中的存储成本是不值得的。我们不会将红色构建发送到 Maven。我们需要一种方法来仅存储最新的快照,而忘记带有时间戳的先前版本。这对于 Maven 来说是可能的,但是我们找不到用 gradle 来做到这一点的方法。 (2认同)