Gradle 與 Maven 指令等效
1. 簡介
Maven 和 Gradle 是兩個最受歡迎的建置自動化和依賴管理工具,可簡化開發人員的工作。雖然 Maven 是一種廣泛使用的建置自動化工具,但 Gradle 更加現代且靈活。
作為從 Maven 過渡到 Gradle 的人,理解 Gradle 中的等效命令至關重要。
在本教學中,我們將探索 Maven 指令及其在 Gradle 中的等效指令。我們還將研究如何在 Maven 本地儲存庫中發布一個專案的工件,以便其他專案可以使用。
2. Maven 指令及其 Gradle 等效指令
在本節中,我們將探討一些最受歡迎的 Maven 指令及其在 Gradle 中的等效指令。
2.1.更新依賴項
Maven 和 Gradle 都允許我們更新專案依賴項以確保我們擁有它們的最新版本。
在 Maven 中,以下是用於更新專案依賴項的典型命令:
mvn clean install -U
具有-U
(大寫)選項的mvn clean install
將強制 Maven 檢查依賴項的更新版本並從遠端儲存庫下載它們(即使它們已經存在於本機儲存庫中)。
但是,此命令不會更新非快照相依性或發布版本。如果要更新非快照依賴項,仍然需要修改pom.xml
文件,或者也可以使用下列命令:
mvn versions:use-latest-releases
此命令將使用最新的發布版本替換任何非快照且沒有年月日後綴的發布版本。
在 Gradle 中,我們使用以下命令強制刷新來自遠端儲存庫的依賴項。
gradle build --refresh-dependencies
此命令忽略本機快取的依賴項版本,並強制 Gradle 在配置的儲存庫中進行新的尋找。值得注意的是,Gradle 會檢查遠端儲存庫中是否有動態版本的更新,例如SNAPSHOT
、 latest.release
和1.+
,如果有新版本可用,它就會下載。
然而,即使 Gradle 忽略了緩存,它也不會盲目地重新下載每個工件。相反,它會比較本地和遠端儲存庫中檔案的雜湊值,如果匹配,則使用現有檔案而不是重新下載它。
2.2.建置和安裝項目
在 Maven 中,為了清理、編譯、測試、打包和安裝項目,我們使用以下命令:
mvn clean install
我們可以使用以下指令在 Gradle 中實現相同的功能:
gradle clean build
此命令刪除build/
目錄,然後編譯、測試和打包專案。
2.3.其他常用命令
現在讓我們來看看 Maven 中經常使用的一些其他命令以及 Gradle 中的等效命令:
Maven 指令 | Gradle 指令 | 目的 |
mvn clean | gradle clean | 刪除建置目錄 |
mvn compile | gradle compileJava | 編譯 Java 程式碼 |
mvn test | gradle test | 運行測試 |
mvn package | gradle jar / gradle war | 建立 JAR/WAR 文件 |
mvn verify | gradle check | 運行所有驗證任務 |
mvn deploy | gradle publish | 將工件發佈到遠端儲存庫 |
mvn site | No direct equivalent | Maven 產生專案站點; Gradle 沒有內建此功能 |
mvn dependency:tree | gradle dependencies | 顯示項目依賴關係 |
mvn dependency:purge-local-repository | gradle –refresh-dependencies | 強制重新下載依賴項 |
3. 處理多個項目
在進行多個專案時,我們常常會有一些相互依賴的專案。我們需要使一個專案的工件在本地儲存庫中可供另一個專案使用。
在 Maven 中,我們執行命令mvn install
以使工件在本機儲存庫中可用。但是在 Gradle 中我們要如何達成同樣的目標呢?讓我們來看看。
對於 Gradle 7 之前的版本,我們在build.gradle
檔案中如下使用maven
插件:
apply plugin: "java"
apply plugin: "maven"
group = 'com.example'
version = '1.0.0'
然後運行:
gradle install
此指令將工件安裝到~/.m2/repository
中,使其可供依賴專案使用。
對於 Gradle 7 及更高版本,我們使用maven-publish
插件將工件發佈到本機儲存庫:
plugins {
id 'java'
id 'maven-publish'
}
group = 'com.example'
version = '1.0.0'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
mavenLocal()
}
}
上述腳本定義了兩個插件。 Java 外掛程式有助於執行標準 Java 編譯和打包,而 Maven-publish 外掛程式有助於在本機儲存庫中發布工件。
接下來,我們有群組和版本屬性,它們定義項目的唯一識別碼和版本。
發布區塊幫助我們定義如何發布專案的成果。 mavenJava
發布,類型為MavenPublication
,是使用from components.java
語句建立的。
這將確保已編譯的 Java 元件(包括 JAR 檔案和其他元資料)包含在出版物中。
最後,作為儲存庫的一部分,我們定義了mavenlocal()
,它引用 maven 本地儲存庫。
一旦我們定義這些,我們就可以執行mvn install
在本機 Maven 儲存庫中安裝工件。該工件現在可供其他本地項目使用。
4. 結論
在本文中,我們比較了 Maven 和 Gradle 的命令。正如我們所見,它們非常相似。
Maven 能做的事情 Gradle 也能做;但是,它們在我們需要運行的配置和命令方面有所不同。雖然需要一些時間來適應 Gradle,但如果我們比較並理解兩者之間的相似之處,過渡就會更容易。