使用Gradle删除和/或替换Nexus中的工件

时间:2014-10-31 04:07:08

标签: gradle nexus

我还是Gradle和Nexus的新手。

我希望能够使用Gradle从托管的nexus存储库中删除工件。使用nexus GUI来做到这一点不是一个选择,因为我不想。

想要这样做的部分原因是能够自动纠正上传错误,例如错误标记的工件或使用错误版本上传的工件。我也可能只想消灭整个项目及其所有版本(可能是因为它被上传到了错误的仓库,或者我只是做了一些清洁工作。或许我想要覆盖当前上载的版本无论如何,我现在还没有真正的用例,但我仍然想知道如何去做。

编辑:此外,我很好奇在已经上传某个工件版本时“优雅地”处理时间的方法,例如捕获特定异常并输出用户友好消息以建议开发人员更新构建版本之前上传。

这是我当前的uploadArtifact任务。

uploadArchives {
    repositories {
        flatDir {
            dirs 'repos'
        }
        mavenDeployer {
            credentials {
                username "user"
                password "password"
            }
            url "http://localhost:8081/nexus/content/repositories/releases/"
        }
    }
}

1 个答案:

答案 0 :(得分:2)

Gradle没有内置任何东西来管理Nexus存储库。除非您找到第三方Gradle插件,否则您必须开发自己的解决方案。例如,您可以编写一个或多个使用Nexus' REST API可以实现您的目标。

PS:Maven存储库被设计为不可变的,并且在发布之后更改任何数据或元数据通常是不受欢迎的。 (而是应该发布一个可以解决问题的新版本。)要使这种更改生效,每个开发人员和CI计算机都必须使用--refresh-dependencies运行所有受影响的版本,以便使本地缓存无效(或清除整个缓存)。这可能会导致很多的痛苦。