Plugins 在gradle插件中,如何替换maven插件';上传档案';使用artifactory插件';artifactoryPublish';?
是的,我确实需要应用“maven”和“artifactory”插件。然而,有许多现有的Jenkins作业显式地调用“uploadArchives”(由maven插件提供)。我想在我自己的插件中覆盖它,当使用“uploadArchives”时,强制它调用“artifactoryPublish” 我希望在我的插件中以编程方式实现这一点,而不是更改数百个build.gradle文件,我已经尝试了我能想到的所有调用组合,但迄今为止都没有成功 最后一点需要注意的是,这必须至少回到Gradle 2.4,因为正在使用Gradle包装器,并且在一组构建中调用了几个不同版本的Gradle 有人知道如何做到这一点吗 以下是我最近尝试的一件事: project.getTasks().replace('uploadArchives',MyTask) 尽管调用了构造函数(通过println消息验证),但从未调用任务本身(通过添加显式的“throw”语句验证,并且从未看到异常)。只是为了澄清 我想覆盖上载存档,主要原因有三个:Plugins 在gradle插件中,如何替换maven插件';上传档案';使用artifactory插件';artifactoryPublish';?,plugins,gradle,Plugins,Gradle,是的,我确实需要应用“maven”和“artifactory”插件。然而,有许多现有的Jenkins作业显式地调用“uploadArchives”(由maven插件提供)。我想在我自己的插件中覆盖它,当使用“uploadArchives”时,强制它调用“artifactoryPublish” 我希望在我的插件中以编程方式实现这一点,而不是更改数百个build.gradle文件,我已经尝试了我能想到的所有调用组合,但迄今为止都没有成功 最后一点需要注意的是,这必须至少回到Gradle 2.4,因为
- 许多现有的工作(以及程序员的手指)都有 上传已编程的档案
- 我们需要额外的信息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。因此,如果这些工作取而代之的是我的东西,而不必改变所有的工作,那将是很有帮助的。至于添加我的插件,这已经完成了——我只是在更改实现。