本指南將引導您使用 Maven 建立一個簡單的 Java 專案。
您將創建一個提供一天中的時間的應用程序,然後使用 Maven 建立它。
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
首先,您需要設定一個 Java 專案以供 Maven 建置。為了將注意力集中在 Maven 上,現在使專案盡可能簡單。在您選擇的專案資料夾中建立此結構。
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_struction_hello.adoc
在src/main/java/hello
目錄中,您可以建立任何您想要的 Java 類別。為了與本指南的其餘部分保持一致,請建立這兩個類別: HelloWorld.java
和Greeter.java
。
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
現在您已經有了一個可以使用 Maven 建置的項目,下一步就是安裝 Maven。
Maven 可從 https://maven.apache.org/download.cgi 下載作為 zip 檔案。只需要二進位文件,因此請尋找 apache-maven- {version} -bin.zip 或 apache-maven- {version} -bin.tar.gz 的連結。
下載 zip 檔案後,將其解壓縮到您的電腦。然後將bin資料夾新增到您的路徑中。
若要測試 Maven 安裝,請從命令列執行mvn
:
mvn-v
如果一切順利,您應該會看到一些有關 Maven 安裝的資訊。它看起來類似於(儘管可能略有不同)以下內容:
Apache Maven 3.3.9(bb52d8502b132ec0a5a3f4c09453c07478323dc5;2015-11-10T16:41:47 + 00:00) Maven 首頁:/home/dsyer/Programs/apache-maven Java 版本:1.8.0_152,供應商:Azul Systems, Inc. Java 主目錄:/home/dsyer/.sdkman/candidates/java/8u152-zulu/jre 預設區域設定:en_GB,平台編碼:UTF-8 作業系統名稱:“linux”,版本:“4.15.0-36-generic”,架構:“amd64”,系列:“unix”
恭喜!現在您已經安裝了 Maven。
資訊:您可能會考慮使用 Maven 包裝器來使您的開發人員免於擁有正確版本的 Maven,或者根本不需要安裝它。從 Spring Initializr 下載的項目包含包裝器。它在專案的頂層顯示為腳本mvnw
,您可以代替mvn
運行該腳本。
現在 Maven 已安裝,您需要建立 Maven 專案定義。 Maven 專案是使用名為pom.xml的 XML 檔案定義的。除此之外,該文件還提供了專案的名稱、版本以及它對外部程式庫的依賴關係。
在專案根目錄下建立一個名為pom.xml的檔案(即放在src
資料夾旁邊)並提供以下內容:
pom.xml
link:initial/pom.xml[role=include]
除了可選的
元素之外,這是建立 Java 專案所需的最簡單的pom.xml檔案。它包括項目配置的以下詳細資訊:
。 POM 模型版本(始終為 4.0.0)。
。項目所屬的團體或組織。通常表示為倒置域名。
。為專案的庫工件指定的名稱(例如,其 JAR 或 WAR 檔案的名稱)。
。正在建置的項目的版本。
- 項目應該如何打包。 JAR 檔案打包預設為「jar」。使用“war”進行WAR文件打包。
筆記 | 在選擇版本控制方案時,Spring 推薦語意版本控制方法。 |
此時,您已經定義了一個最小但功能強大的 Maven 專案。
Maven 現在已準備好建置專案。現在您可以使用 Maven 執行多個建置生命週期目標,包括編譯專案程式碼、建立庫包(例如 JAR 檔案)以及在本機 Maven 依賴項儲存庫中安裝庫的目標。
若要嘗試構建,請在命令列中發出以下命令:
MVN編譯
這將運行 Maven,告訴它執行編譯目標。完成後,您應該在target/classes目錄中找到編譯後的.class檔案。
由於您不太可能想要直接分發或使用.class文件,因此您可能需要執行套件目標:
MVN包
打包目標將編譯您的 Java 程式碼,執行任何測試,最後將程式碼打包到目標目錄中的 JAR 檔案中。 JAR 檔案的名稱將基於專案的
和
。例如,給定之前的最小pom.xml文件,JAR 文件將命名為gs-maven-0.1.0.jar 。
若要執行 JAR 文件,請執行:
java -jar 目標/gs-maven-0.1.0.jar
筆記 | 如果您將 的值從“jar”更改為“war”,則結果將是目標目錄中的 WAR 檔案而不是 JAR 檔案。 |
Maven 也會在本機電腦上維護依賴項儲存庫(通常位於主目錄中的.m2/repository目錄中),以便快速存取專案依賴項。如果您想將專案的 JAR 檔案安裝到該本機儲存庫,那麼您應該呼叫install
目標:
MVN安裝
安裝目標將編譯、測試和打包專案的程式碼,然後將其複製到本地依賴項儲存庫中,為另一個專案將其作為依賴項引用做好準備。
說到依賴關係,現在是時候在 Maven 建置中聲明依賴關係了。
簡單的 Hello World 範例是完全獨立的,不依賴任何其他函式庫。然而,大多數應用程式依賴外部程式庫來處理常見和複雜的功能。
例如,假設除了說「Hello World!」之外,您還希望應用程式列印當前日期和時間。雖然您可以使用本機 Java 庫中的日期和時間工具,但使用 Joda Time 庫可以讓事情變得更有趣。
首先,將 HelloWorld.java 改為如下所示:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
這裡HelloWorld
使用Joda Time的LocalTime
類別來取得並列印當前時間。
如果您現在執行mvn compile
來建置項目,建置將會失敗,因為您沒有在建置中將 Joda Time 聲明為編譯依賴項。您可以透過將以下行新增至pom.xml (在
元素內)來解決此問題:
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
此 XML 區塊聲明了專案的依賴項清單。具體來說,它聲明了 Joda Time 庫的單一依賴項。在
元素中,依賴座標由三個子元素定義:
- 依賴項所屬的群組或組織。
- 所需的函式庫。
- 所需的函式庫的特定版本。
預設情況下,所有依賴項都屬於compile
依賴項。也就是說,它們應該在編譯時可用(如果您正在建立 WAR 文件,包括在 WAR 的/WEB-INF/libs資料夾中)。此外,您可以指定
元素來指定下列範圍之一:
provided
- 編譯專案程式碼所需的依賴項,但將在執行時由執行程式碼的容器提供(例如,Java Servlet API)。
test
- 用於編譯和執行測試的依賴項,但建置或執行專案的執行時間程式碼不需要。
現在,如果您執行mvn compile
或mvn package
,Maven 應該從 Maven 中央儲存庫解析 Joda Time 依賴項,並且建置將會成功。
首先在測試範圍內將 JUnit 新增為 pom.xml 的依賴項:
link:complete/pom.xml[role=include]
然後創建一個像這樣的測試案例:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven 使用名為「surefire」的插件來執行單元測試。該外掛程式的預設配置會編譯並執行src/test/java
中名稱與*Test
相符的所有類別。您可以像這樣在命令列上執行測試
MVN測試
或者只是使用我們上面已經展示的mvn install
步驟(有一個生命週期定義,其中“test”作為“install”中的一個階段包含在內)。
這是完成的pom.xml
檔:
pom.xml
link:complete/pom.xml[role=include]
筆記 | 完成的pom.xml檔案使用 Maven Shade 插件,以便於使 JAR 檔案可執行。本指南的重點是 Maven 入門,而不是使用這個特定的插件。 |
恭喜!您已經建立了一個簡單而有效的 Maven 專案定義來建立 Java 專案。
以下指南也可能有幫助:
使用 Gradle 建立 Java 項目
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc