是的,我确实需要同时应用“maven”插件和“artifactory”插件。但是,有许多现有的Jenkins作业显式调用了“uploadArchives”(由maven插件提供)。我想在我自己的插件中重写它,以在使用“uploadArchives”时强制其调用“artifactoryPublish”。
我想以编程方式在我的插件中执行此操作,而不是更改数百个build.gradle文件,并且到目前为止,我已经尝试了所有我能想到的调用组合。
最后的警告是,这至少必须恢复到Gradle 2.4,因为正在使用gradle包装器,并且在一组构建中调用了gradle的几种不同版本。
有人对如何实现这一目标有想法吗?
这是我尝试过的最新内容:
project.getTasks()。replace('uploadArchives',MyTask)
尽管调用了构造函数(由println消息验证),但从未调用任务本身(通过添加显式的“throw”语句并且从未看到异常来验证)。
最佳答案
只是为了澄清...
我想覆盖uploadArchives的3个主要原因:
在其中编程的uploadArchives。
特别是如果通过Jenkins插件完成的话,那么您将获得Jenkins的工作
数字等。
没有额外的构建信息。
我终于找到了答案……这不是很简单,但是可以按照我们希望的那样工作,除了在构建过程中关于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]”,我们不希望有任何混淆。
关于plugins - 在gradle插件中,如何用人工插件 'uploadArchives'替换maven插件 'artifactoryPublish'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048786/