組建初始化外掛可用於建立新的 Gradle 組建。它支援建立各種類型的全新 Gradle 組建,以及將現有的 Apache Maven 組建轉換為 Gradle。
範例用法
gradle init \
--type java-application \
--dsl kotlin \
--test-framework junit-jupiter \
--package my.project \
--project-name my-project \
--no-split-project \
--java-version 17
Gradle 進入互動模式,並在缺少所選專案類型的必要參數時提示使用者。
支援的 Gradle 組建類型
組建初始化外掛支援產生各種組建類型。以下列出這些類型,並可在以下 區段 中取得每個類型的更多詳細資訊。
類型 | 說明 |
---|---|
將現有的 Apache Maven 組建轉換為 Gradle |
|
基本、空的 Gradle 組建 |
|
以 Java 實作的命令列應用程式 |
|
以 Java 實作的 Gradle 外掛 |
|
Java 函式庫 |
|
以 Kotlin/JVM 實作的命令列應用程式 |
|
以 Kotlin/JVM 實作的 Gradle 外掛 |
|
Kotlin/JVM 函式庫 |
|
以 Groovy 實作的命令列應用程式 |
|
以 Groovy 實作的 Gradle 外掛 |
|
Groovy 函式庫 |
|
Scala 應用程式 |
|
Scala 函式庫 |
|
以 C++ 實作的命令列應用程式 |
|
C++ 函式庫 |
要建立的內容
使用 init
任務最簡單、也最建議的方法,就是從互動式主控台執行 gradle init
。Gradle 會列出可用的建置類型,並請您選取一個。然後,它會詢問一些其他問題,讓您微調結果。
init
任務有幾個可用的命令列選項,用於控制它會產生什麼。當 Gradle 不是從互動式主控台執行時,您可以使用這些選項。您可以使用 help
任務查看可用的選項
gradle help --task init
可以使用 --type
命令列選項來指定建置類型。例如,要建立 Java 函式庫專案,請執行
gradle init --type java-library
如果沒有提供 --type
選項,Gradle 會嘗試從環境中推斷類型。例如,如果它找到要轉換為 Gradle 建置的 pom.xml
檔案,它會推斷類型為「pom
」。如果無法推斷類型,將會使用類型「basic
」。
init
任務也支援使用 Gradle Kotlin DSL 或 Gradle Groovy DSL 產生建置指令碼。對於大多數建置類型,建置指令碼 DSL 預設為 Kotlin DSL,而對於 Groovy 建置類型,則預設為 Groovy DSL。可以使用 --dsl
命令列選項來選取 DSL。
例如,要使用 Kotlin DSL 建置指令碼建立 Java 函式庫專案,請執行
gradle init --type java-library --dsl kotlin
您可以使用 --project-name
選項變更已產生專案的名稱。它預設為執行 init
任務的目錄名稱。
您可以使用 --package
選項變更用於產生來源檔案的套件。它預設為專案名稱。
如果提供了 --incubating
選項,Gradle 會產生建置指令碼,該指令碼可能會使用最新版本的 API,這些 API 標記為 @Incubating
並且仍 可能變更。如要停用此行為,請使用 --no-incubating
。
所有建置類型也會在建置中設定 Gradle Wrapper。
建置初始化類型
pom
建置類型 (Maven 轉換)
「pom
」類型可用於將 Apache Maven 建置轉換為 Gradle 建置。這是透過將 POM 轉換為一個或多個 Gradle 檔案來運作的。只有在呼叫 init
工作的目錄中有一個有效的「pom.xml
」檔案,或者如果透過「-p」命令列選項呼叫,則在指定的專案目錄中才能使用。如果存在此類檔案,將自動推斷此「pom
」類型。
Maven 轉換實作的靈感來自 maven2gradle 工具,該工具最初是由 Gradle 社群成員開發的。
轉換流程具有下列功能
-
使用有效 POM 和有效設定 (支援 POM 繼承、相依性管理、屬性)
-
同時支援單一模組和多模組專案
-
支援自訂模組名稱 (與目錄名稱不同)
-
產生一般元資料 - ID、說明和版本
-
套用 Maven Publish、Java Library 和 War 外掛程式 (視需要而定)
-
支援將 war 專案封裝為 jar (如果需要)
-
產生相依性 (外部和模組間)
-
產生下載存放庫 (包含本機 Maven 存放庫)
-
調整 Java 編譯器設定
-
支援封裝來源、測試和 javadoc
-
支援 TestNG 執行器
-
從 Maven enforcer 外掛程式設定產生全域排除
--insecure-protocol
選項
此選項用於告訴轉換流程如何處理轉換位於不安全的 http
URL 中的 Maven 存放庫。不安全的存放庫設定 --insecure-protocol 選項。預設值為 warn
。
可用的值為
-
fail
- 在遇到不安全的存放庫 URL 時立即中止建置。 -
allow
- 自動將產生的 Gradle 建置指令碼中 Maven 存放庫 URL 的allowInsecureProtocol
屬性設定為true
。 -
warn
- 發出關於每個不安全 URL 的警告。根據allow
選項,產生註解掉的程式碼行以啟用每個存放庫。您必須透過編輯產生的指令碼並取消註解每個存放庫 URL 來選擇加入,否則 Gradle 建置將會失敗。 -
upgrade
- 自動將http
URL 轉換為https
URL。
編譯時間相依性
Maven 會自動使用其內隱的 compile
範圍對該專案的使用者公開相依性。這種行為並不可取,而 Gradle 會採取措施,協助函式庫作者使用 java-library
外掛程式中的 api
和 implementation
組態來減少其 API 佔用空間。
儘管如此,許多 Maven 專案依賴這種外洩行為。因此,init
任務會將 compile
範圍的相依性對應到產生的 Gradle 建置指令碼中的 api
組態。產生的 Gradle 專案的相依性將最接近現有 Maven 專案公開的相依性;然而,在轉換為 Gradle 之後,我們強烈建議將盡可能多的 api
相依性移至 implementation
組態。這有幾個好處
-
函式庫可維護性 - 透過對使用者公開較少的傳遞相依性,函式庫維護者可以新增或移除相依性,而無需擔心會導致使用者的編譯時間中斷。
-
使用者的相依性衛生 - 在函式庫中利用
implementation
組態可防止其使用者在編譯時間內隱地依賴函式庫的傳遞相依性,這被視為不良做法。 -
增加編譯避免 - 減少從專案外洩的傳遞相依性數量,也會降低 ABI 變更觸發使用者重新編譯的可能性。Gradle 也會花較少時間為其最新檢查建立相依性索引。
-
編譯速度提升 - 減少從專案外洩的傳遞相依性數量有助於其使用者的編譯器處理程序,因為要載入的函式庫較少,而 Gradle 的增量編譯器要追蹤的命名空間也較少。
java-application
建置類型
無法推論「java-application
」建置類型。必須明確指定。
它具有下列功能
-
使用「
application
」外掛程式來產生以 Java 實作的命令列應用程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 JUnit 4 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例類別和單元測試
可透過提供 --test-framework
參數值來指定替代測試架構。若要使用不同的測試架構,請執行下列其中一項指令
-
gradle init --type java-application --test-framework junit-jupiter
:使用 JUnit Jupiter 進行測試,而非 JUnit 4 -
gradle init --type java-application --test-framework spock
:使用 Spock 進行測試,而非 JUnit 4 -
gradle init --type java-application --test-framework testng
:使用 TestNG 進行測試,而非 JUnit 4
--java-version
選項
在建立 Java 專案時,您必須設定 Java 版本。您可以透過提供您想要使用的 Java 主版本來設定
gradle init --type java-application --java-version 11 --dsl kotlin # and other parameters
java-library
建置類型
無法推論「java-library
」建置類型。必須明確指定。
它具有下列功能
-
使用「
java
」外掛程式,以產生用 Java 實作的函式庫 -
使用「
mavenCentral
」相依性儲存庫 -
使用 JUnit 4 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例類別和單元測試
可透過提供 --test-framework
參數值來指定替代測試架構。若要使用不同的測試架構,請執行下列其中一項指令
-
gradle init --type java-library --test-framework junit-jupiter
:使用 JUnit Jupiter 進行測試,而非 JUnit 4 -
gradle init --type java-library --test-framework spock
:使用 Spock 進行測試,而非 JUnit 4 -
gradle init --type java-library --test-framework testng
:使用 TestNG 進行測試,而非 JUnit 4
java-gradle-plugin
建置類型
無法推論「java-gradle-plugin
」建置類型。必須明確指定。
它具有下列功能
-
使用「
java-gradle-plugin
」外掛程式,以產生用 Java 實作的 Gradle 外掛程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 JUnit 4 和 TestKit 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例類別和單元測試
kotlin-application
建置類型
無法推論「kotlin-application
」建置類型。必須明確指定。
它具有下列功能
-
使用「
org.jetbrains.kotlin.jvm
」和「application
」外掛程式,以產生用 Kotlin 實作的命令列應用程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Kotlin 1.x
-
使用 Kotlin 測試函式庫 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含一個範例 Kotlin 類別和一個相關的 Kotlin 測試類別
kotlin-library
建置類型
「kotlin-library
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
org.jetbrains.kotlin.jvm
」外掛程式產生使用 Kotlin 實作的函式庫 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Kotlin 1.x
-
使用 Kotlin 測試函式庫 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含一個範例 Kotlin 類別和一個相關的 Kotlin 測試類別
kotlin-gradle-plugin
建置類型
「kotlin-gradle-plugin
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
java-gradle-plugin
」和「org.jetbrains.kotlin.jvm
」外掛程式產生使用 Kotlin 實作的 Gradle 外掛程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Kotlin 1.x
-
使用 Kotlin 測試函式庫 和 TestKit 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例類別和單元測試
scala-application
建置類型
「scala-application
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
scala
」外掛程式產生使用 Scala 實作的應用程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Scala 2.13
-
使用 ScalaTest 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 Scala 類別和關聯的 ScalaTest 測試套件
scala-library
建置類型
「scala-library
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
scala
」外掛程式產生使用 Scala 實作的函式庫 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Scala 2.13
-
使用 ScalaTest 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 Scala 類別和關聯的 ScalaTest 測試套件
groovy-library
建置類型
「groovy-library
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
groovy
」外掛程式產生使用 Groovy 實作的函式庫 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Groovy 2.x
-
使用 Spock 測試架構 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 Groovy 類別和關聯的 Spock 規格
groovy-application
建置類型
「groovy-application
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
application
」和「groovy
」外掛程式產生使用 Groovy 實作的命令列應用程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Groovy 2.x
-
使用 Spock 測試架構 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 Groovy 類別和關聯的 Spock 規格
groovy-gradle-plugin
建置類型
「groovy-gradle-plugin
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
java-gradle-plugin
」和「groovy
」外掛程式產生使用 Groovy 實作的 Gradle 外掛程式 -
使用「
mavenCentral
」相依性儲存庫 -
使用 Groovy 2.x
-
使用 Spock 測試架構 和 TestKit 進行測試
-
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例類別和單元測試
cpp-application
建置類型
「cpp-application
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
cpp-application
」外掛程式產生以 C++ 實作的命令列應用程式 -
使用「
cpp-unit-test
」外掛程式建置並執行簡單的單元測試 -
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 C++ 類別、私人標頭檔和關聯的測試類別
cpp-library
建置類型
「cpp-library
」建置類型無法推論。必須明確指定。
它具有下列功能
-
使用「
cpp-library
」外掛程式產生 C++ 函式庫 -
使用「
cpp-unit-test
」外掛程式建置並執行簡單的單元測試 -
在傳統位置擁有原始碼目錄
-
如果沒有現有的原始碼或測試檔案,則包含範例 C++ 類別、公開標頭檔和關聯的測試類別