在gradle插件中,如何替换maven插件' uploadArchives'使用神器插件&artifactoryPublish'?

时间:2016-01-27 21:53:15

标签: plugins gradle

是的,我确实需要同时使用' maven'和' artifactory'插件。但是,有许多现有的Jenkins工作明确地称之为“uploadArchives”。 (由maven插件提供)。我想在我自己的插件中覆盖它以强制它调用“artifactoryPublish”#39;什么时候上传档案'使用。

我想在我的插件中以编程方式执行此操作,而不是更改数百个build.gradle文件,并且我已经尝试了到目前为止我没想到的所有调用组合。

最后一点需要注意的是,这必须至少回到Gradle 2.4,因为正在使用gradle包装器,并且在一组构建中调用了几个不同版本的gradle。

任何人都知道如何做到这一点?

这是我尝试过的最新事情:

project.getTasks()。replace(' uploadArchives',MyTask)

虽然调用了构造函数(由println消息验证),但从不调用任务本身(通过添加显式的' throw'语句进行验证,并且永远不会看到异常)。

1 个答案:

答案 0 :(得分:0)

只是为了澄清......

我想覆盖uploadArchives有三个主要原因:

  • 许多现有的工作(以及程序员的手指) uploadArchives编程。

  • 我们想要额外的信息artifactoryPublish创建和上传, 特别是如果通过Jenkins插件完成,那么你就可以获得Jenkins的工作 数字等

  • 我们不希望任何人使用普通的uploadArchives和发布 没有额外的构建信息。

我终于找到了自己的答案......这不是很简单,但确实可以正常工作,除了在构建过程中有关uploadArchives的额外输出行。

    project.plugins.apply('com.jfrog.artifactory')
    project.getTasks().create([name: 'uploadArchives', type: MyOverrideTask, overwrite: true, dependsOn: ['artifactoryPublish'] as String[], group: 'Upload'])

是的,我可以在依赖artifactoryPublish后禁用uploadArchives,但是在构建过程中不打印'uploadArchives',它会打印'uploadArchives [Skipped]',我们不希望有任何混乱。