Plugins 在gradle插件中,如何替换maven插件';上传档案';使用artifactory插件';artifactoryPublish';?

Plugins 在gradle插件中,如何替换maven插件';上传档案';使用artifactory插件';artifactoryPublish';?,plugins,gradle,Plugins,Gradle,是的,我确实需要应用“maven”和“artifactory”插件。然而,有许多现有的Jenkins作业显式地调用“uploadArchives”(由maven插件提供)。我想在我自己的插件中覆盖它,当使用“uploadArchives”时,强制它调用“artifactoryPublish” 我希望在我的插件中以编程方式实现这一点,而不是更改数百个build.gradle文件,我已经尝试了我能想到的所有调用组合,但迄今为止都没有成功 最后一点需要注意的是,这必须至少回到Gradle 2.4,因为

是的,我确实需要应用“maven”和“artifactory”插件。然而,有许多现有的Jenkins作业显式地调用“uploadArchives”(由maven插件提供)。我想在我自己的插件中覆盖它,当使用“uploadArchives”时,强制它调用“artifactoryPublish”

我希望在我的插件中以编程方式实现这一点,而不是更改数百个build.gradle文件,我已经尝试了我能想到的所有调用组合,但迄今为止都没有成功

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

有人知道如何做到这一点吗

以下是我最近尝试的一件事:

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

尽管调用了构造函数(通过println消息验证),但从未调用任务本身(通过添加显式的“throw”语句验证,并且从未看到异常)。

只是为了澄清

我想覆盖上载存档,主要原因有三个:

  • 许多现有的工作(以及程序员的手指)都有 上传已编程的档案

  • 我们需要额外的信息artifactoryPublish创建并上传, 特别是如果通过Jenkins插件完成,那么你就得到了Jenkins的工作 号码等

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

我终于自己找到了答案。。。这并不十分简单,但确实可以按照我们的期望工作,除了构建过程中关于上传存档的额外输出行

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

是的,我本可以在使uploadArchives依赖于artifactoryPublish之后禁用uploadArchives,但是在构建过程中,它不只是打印“uploadArchives”,而是打印“uploadArchives[跳过]”,我们不希望出现任何混乱。

您一定要覆盖该任务吗?是否需要补充工作?此外,一旦你成功构建了插件,你不需要将插件添加到数百个build.gradle文件中吗?我不希望任何人再使用uploadArchives,但可能有数百个现有的自动化作业称之为uploadArchives。因此,如果这些工作取而代之的是我的东西,而不必改变所有的工作,那将是很有帮助的。至于添加我的插件,这已经完成了——我只是在更改实现。