代码之家  ›  专栏  ›  技术社区  ›  Ben

在同一项目中本地应用自定义渐变插件

  •  1
  • Ben  · 技术社区  · 7 年前

    我写了一个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引用,但是它说找不到插件。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Matias Bjarland    7 年前

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

    你应该看看Gradle的文档 organizing your build logic 特别是我可能会先把你的插件源代码 buildSrc directory .

    如果你把你的插件源放在一个名为 buildSrc 根据上面的文档,它将被自动编译并包含在构建类路径中。清理项目时也不会删除它。你真正需要的是 apply plugin: x 语句。

    值得注意的是,尽管 建筑钢筋混凝土 很方便,在插件的开发阶段它仍然存在。如果你想更频繁地使用这个插件,在更多的地方,或者以其他方式共享它,那么用这个插件构建一个jar可能是很好的。