簡體   English   中英

在同一個項目中本地應用自定義 gradle 插件

[英]Apply custom gradle plugin locally in the same project

我寫了一個 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' 的gradlew :somemodule:plugin:build腳本,所以它不起作用。

還嘗試了classpath project(':somemodule:plugin')而不是 jar 引用,但它說找不到插件。

將 gradle 插件的代碼與該插件應該幫助構建的項目代碼混合在一起可能是一個壞主意。

您應該查看有關組織構建邏輯的 gradle 文檔,特別是我可能會首先將您的插件源粘貼到buildSrc 目錄中

如果您按照上述文檔將插件源代碼放在名為buildSrc的目錄中,它將被自動編譯並包含在您的構建類路徑中。 當您清理項目時,它也不會被刪除。 您真正需要的是apply plugin: x語句。

應該注意的是,盡管buildSrc很方便,但它仍然存在於插件的開發階段。 如果您打算在更多地方更頻繁地使用該插件,或者以其他方式共享它,那么實際使用該插件構建一個 jar 可能會很好。

這是一個老問題,但對於新訪問者:您可以在構建代碼的同時構建插件代碼。 甚至可以有一個構建所有插件的父項目。 請檢查這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM