簡體   English   中英

如何在 gradle 6.0+ 上添加 class / 枚舉以設置 gradle 腳本?

[英]How to add a class / an enum to settings gradle script on gradle 6.0+?

我想添加一個名為 modules 的枚舉,其中包含子模塊的路徑和一些編譯類型。

我曾經在 gradle 6 之前的 buildSrc 中有這個,它可以在 settings.gradle 中訪問

但是從 gradle 6.0 開始,settings.gradle 在 buildSrc 項目之前編譯。 我已將我的枚舉移至 settings.gradle,現在其他項目級別的 gradle 腳本無法訪問它。

以下發行說明中概述了行為更改。 https://docs.gradle.org/current/userguide/upgrading_version_5.html#changes_to_plugins_and_build_scripts

他們建議將 settings.gradle 中使用的枚舉/類添加到構建腳本閉包中,但我不確定該怎么做。

https://docs.gradle.org/current/userguide/upgrading_version_5.html#plugins_and_classes_loaded_in_settings_scripts_are_visible_to_project_scripts_and_buildsrc

我最近遇到了一個類似的問題,我的公司有自定義代碼用於通過我們保留在 buildSrc 中的 Nexus 進行身份驗證。 我不能把它變成一個插件,因為我需要將它存儲在我們的 Nexus 中,然后會處於 catch-22 情況,因為我需要進行身份驗證才能獲得身份驗證插件!

我可以看到 2 個潛在的解決方法:

  1. 公開發布的 jar

將您的自定義類構建為單獨的 jar 或 Gradle 插件(如果這適合用例)。 將 jar 發布到 maven 存儲庫,您可以從settings.gradle構建腳本訪問該存儲庫(對我來說這很困難,因為它是敏感的公司特定代碼)。

這在您的settings.gradle中可能類似於以下內容:

include "project-name"

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
       classpath 'com.companyname:gradle-utils:0.0.1'
    }
}

  1. 提交二進制文件

這不是一個理想的選擇,但您可以在另一個存儲庫中管理自定義 buildSrc 類的源代碼,然后每次對它們進行更改(希望不經常) - 您可以構建新版本並將構建的 jar 提交到需要使用它的存儲庫(可能在 buildSrc 下)。 如果您的自定義代碼在 gradle 運行時具有並非自然存在於類路徑上的依賴項,則您需要將 package 放入您提交的 jar 中。

您的settings.gradle可能如下所示:

include "project-name"

buildscript {
    dependencies {
         classpath files("buildSrc/gradle-utils.jar")
    }
}

暫無
暫無

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

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