plugins - 在gradle插件中,如何用人工插件 'uploadArchives'替换maven插件 'artifactoryPublish'?

标签 plugins gradle

是的,我确实需要同时应用“maven”插件和“artifactory”插件。但是,有许多现有的Jenkins作业显式调用了“uploadArchives”(由maven插件提供)。我想在我自己的插件中重写它,以在使用“uploadArchives”时强制其调用“artifactoryPublish”。

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

最后的警告是,这至少必须恢复到Gradle 2.4,因为正在使用gradle包装器,并且在一组构建中调用了gradle的几种不同版本。

有人对如何实现这一目标有想法吗?

这是我尝试过的最新内容:

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

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

最佳答案

只是为了澄清...

我想覆盖uploadArchives的3个主要原因:

  • 许多现有的工作(以及程序员的手指)
    在其中编程的uploadArchives。
  • 我们希望额外的信息 Artifact 可以发布并创建并上传,
    特别是如果通过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]”,我们不希望有任何混淆。

    关于plugins - 在gradle插件中,如何用人工插件 'uploadArchives'替换maven插件 'artifactoryPublish'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048786/

    相关文章:

    php - add_editor_style 总是从我的 WordPress 插件加载旧的 css 文件

    spring - Grails3 Spring Security Plugin RequestMap模式不起作用

    scala - 将 Scala SDK 添加到 Intellij 中的所有模块

    gradle - 如何将 testOptions.unitTests.all 转换为 gradle Kotlin dsl

    gradle - 在 Gradle 中定义嵌套的扩展容器

    java - 当 Gradle 中的依赖项过时时发出警告

    gradle - 使用 Spotbugs 的简单 gradle 文件并查找安全错误?

    javascript - 如何使用自定义 Vue 插件

    android - 如何使用 Android Market 发布应用程序插件?

    jquery - 使用 jquery 制作像选框一样的文本的插件