【问题标题】:Apply custom gradle plugin locally in the same project在同一项目中本地应用自定义 gradle 插件
【发布时间】:2018-05-23 18:00:22
【问题描述】:

我写了一个 gradle 插件,我只想在我自己的项目中使用。 这是一个简化的文件结构:

/root project
  |
  + build.gradle
  + settings.gradle
  + build/
  + some module/
      |
      + build.gradle
      + src/
      + build/
      + plugin/
         |
         + build.gradle
         + src/
         + build/

我通过引用jar文件将插件添加到模块中

// From '/some module/build.gradle'

buildscript {
  dependencies {
    classpath files('./plugin/build/libs/payload-plugin-0.0.1-SNAPSHOT.jar')
  }
}

apply plugin: 'my-custom-plugin'

起初它工作正常,但有一个问题。如果您清理项目并尝试再次构建它,它会失败,因为'./plugin/build/libs/payload-plugin-0.0.1-SNAPSHOT.jar' 不再存在,并且它不会尝试重新构建插件模块,因为这被视为配置错误。

我尝试仅使用 gradlew :somemodule:plugin:build 构建插件,但它首先检查 `:somemodule' 的构建脚本,所以它不起作用。

也试过classpath project(':somemodule:plugin')而不是jar引用,但它说找不到插件。

【问题讨论】:

    标签: java gradle groovy plugins gradle-plugin


    【解决方案1】:

    将 gradle 插件的代码与该插件应该帮助构建的项目代码混合可能是一个坏主意。

    您应该查看 organizing your build logic 上的 gradle 文档,特别是我可能会先将您的插件源代码粘贴在 buildSrc directory 中。

    如果您按照上述文档将插件源放在名为buildSrc 的目录中,它将自动编译并包含在您的构建类路径中。清理项目时也不会删除它。您真正需要的只是apply plugin: x 语句。

    需要注意的是,尽管buildSrc 很方便,但它仍然存在于插件的开发阶段。如果您打算在更多地方更频繁地使用该插件,或者以其他方式共享它,那么使用该插件实际构建一个 jar 可能会很好。

    【讨论】:

      【解决方案2】:

      这是一个老问题,但对于新访问者:您可以在构建代码的同时构建插件代码。甚至可以有一个构建所有插件的父项目。 请查看this answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        相关资源
        最近更新 更多