摘要:要從頭開始,請繼續使用構建?,F在您已經準備好使用構建項目,下一步是安裝。項目使用名為的文件定義。項目所屬的組或組織。默認情況下,所有依賴項都作為依賴項確定范圍。概要恭喜您已經為構建項目創建了一個簡單而有效的項目定義。
本指南將指導您使用Maven構建一個簡單的Java項目。
你要構建什么
您將創建一個提供一天中時間的應用程序,然后使用Maven構建它。
你需要什么
大約15分鐘
最喜歡的文本編輯器或IDE
JDK 8或更高版本
如何完成本指南
與大多數Spring入門指南一樣,您可以從頭開始并完成每個步驟,或者您可以繞過您已熟悉的基本設置步驟。無論哪種方式,您最終都會使用工作代碼。
要從頭開始,請繼續使用Gradle構建。
要跳過基礎知識,請執行以下操作:
下載并解壓縮本指南的源存儲庫,或使用Git克隆它:
git clone https://github.com/spring-guides/gs-maven.git
進入gs-maven/initial
跳到最開始。
完成后,可以根據gs-maven/complete中的代碼檢查結果。
設置項目
首先,您需要為Maven設置一個Java項目來構建。為了保持對Maven的關注,現在讓項目盡可能簡單。在您選擇的項目文件夾中創建此結構。
創建目錄結構
在您選擇的項目目錄中,創建以下子目錄結構;例如,在*nix系統上使用mkdir -p src/main/java/hello:
└── src └── main └── java └── hello
在src/main/java/hello目錄中,您可以創建所需的任何Java類。為了與本指南的其余部分保持一致,請創建以下兩個類:HelloWorld.java和Greeter.java。
src/main/java/hello/HelloWorld.java
package hello; public class HelloWorld { public static void main(String[] args) { Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }
src/main/java/hello/Greeter.java
package hello; public class Greeter { public String sayHello() { return "Hello world!"; } }
現在您已經準備好使用Maven構建項目,下一步是安裝Maven。
Maven可以在http://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.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600) Maven home: /usr/share/maven Java version: 1.7.0_09, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"
恭喜!你現在安裝了Maven。
定義一個簡單的Maven pom
現在已經安裝了Maven,您需要創建一個Maven項目定義。Maven項目使用名為pom.xml的XML文件定義。除此之外,該文件還提供了項目在外部庫上的名稱,版本和依賴關系。
在項目的根目錄下創建一個名為pom.xml的文件(即將其放在src文件夾旁邊),并為其提供以下內容:
4.0.0 org.springframework gs-maven jar 0.1.0 1.8 1.8 org.apache.maven.plugins maven-shade-plugin 2.1 package shade hello.HelloWorld
除了可選**元素之外,這是構建Java項目所必需的最簡單的pom.xml文件。它包括項目配置的以下詳細信息:
**。POM模型版本(總是4.0.0)。
**。項目所屬的組或組織。通常表示為反向域名。
**。要賦予項目庫工件的名稱(例如,其JAR或WAR文件的名稱)。
**。正在構建的項目的版本。
** - 如何打包項目。對于JAR文件打包,默認為“jar”。使用“war”進行WAR文件打包。
在選擇版本控制方案時,Spring建議采用語義版本控制方法。
此時,您已定義了一個最小但功能強大的Maven項目。
構建Java代碼
Maven現在已準備好構建該項目。您現在可以使用Maven執行多個構建生命周期目標,包括編譯項目代碼的目標,創建庫包(例如JAR文件),以及在本地Maven依賴庫中安裝庫。
要嘗試構建,請在命令行中發出以下命令:
mvn compile
這將運行Maven,告訴它執行編譯目標。完成后,您應該在target/classes目錄中找到已編譯的.class文件。
由于您不太可能希望直接分發或使用.class文件,因此您可能希望改為運行package:
mvn package
package將編譯Java代碼,運行任何測試,并通過包裝內的一個JAR文件中的代碼終止上升的目標目錄。JAR文件的名稱將基于項目和。例如,給定之前的最小pom.xml文件,JAR文件將命名為gs-maven-0.1.0.jar。
如果您已將“jar” 的值更改為“war”,則結果將是目標目錄中的WAR文件而不是JAR文件。
Maven還在本地計算機上維護了一個依賴存儲庫(通常位于主目錄中的.m2/repository目錄中),以便快速訪問項目依賴項。如果您想將項目的JAR文件安裝到該本地存儲庫,那么您應該調用install目標:
mvn install
install將編譯,測試和打包項目的代碼,然后將其復制到本地依賴性庫,準備好另一個項目中引用它作為一個依賴。
說到依賴關系,現在是時候在Maven構建中聲明依賴關系了。
聲明依賴關系
簡單的Hello World示例是完全獨立的,不依賴于任何其他庫。但是,大多數應用程序依賴外部庫來處理常見和復雜的功能。
例如,假設除了說“Hello World!”之外,您還希望應用程序打印當前日期和時間。雖然您可以使用本機Java庫中的日期和時間工具,但您可以使用Joda Time庫使事情變得更有趣。
首先,將HelloWorld.java更改為如下所示:
package hello; import org.joda.time.LocalTime; public class HelloWorld { public static void main(String[] args) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }
這里HelloWorld使用Joda Time的LocalTime類來獲取和打印當前時間。
如果您現在要運行mvn compile以構建項目,則構建將失敗,因為您未在構建中將Joda Time聲明為編譯依賴項。您可以通過將以下行添加到pom.xml(在元素內)來解決此問題:
joda-time joda-time 2.9.2
這個XML塊聲明了項目的依賴項列表。具體來說,它聲明了Joda Time庫的單一依賴項。在元素內,依賴關系坐標由三個子元素定義:
** - 依賴項所屬的組或組織。
** - 所需的庫。
** - 所需庫的特定版本。
默認情況下,所有依賴項都作為compile依賴項確定范圍。也就是說,它們應該在編譯時可用(如果您正在構建WAR文件,包括在WAR的/WEB-INF/libs文件夾中)。此外,您可以指定一個元素以指定以下范圍之一:
provided - 編譯項目代碼所需的依賴關系,但是將在運行時由運行代碼的容器(例如,Java Servlet API)提供。
test - 用于編譯和運行測試的依賴關系,但不是構建或運行項目的運行時代碼所必需的依賴關系。
現在,如果您運行mvn compile或mvn package,Maven應該從Maven Central存儲庫解析Joda Time依賴關系,并且構建將成功。
寫一個測試
首先在測試范圍中將JUnit添加為pom.xml的依賴項:
junit junit 4.12 test
然后創建一個這樣的測試用例:
src/test/java/hello/GreeterTest.java
package hello; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.*; import org.junit.Test; public class GreeterTest { private Greeter greeter = new Greeter(); @Test public void greeterSaysHello() { assertThat(greeter.sayHello(), containsString("Hello")); } }
Maven使用一個名為“surefire”的插件來運行單元測試。此插件的默認配置src/test/java使用名稱匹配編譯并運行所有*Test類。您可以在命令行上運行測試
mvn test
或者只使用mvn install上面已經顯示的步驟(有一個生命周期定義,其中“test”作為“安裝”中的一個階段包含在內)。
這是完成的pom.xml文件:
4.0.0 org.springframework gs-maven jar 0.1.0 1.8 1.8 joda-time joda-time 2.9.2 junit junit 4.12 test org.apache.maven.plugins maven-shade-plugin 2.1 package shade hello.HelloWorld
完成的pom.xml文件使用Maven Shade插件,以簡化JAR文件的可執行性。本指南的重點是Maven的入門,而不是使用這個特定的插件。
概要
恭喜!您已經為構建Java項目創建了一個簡單而有效的Maven項目定義。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/73182.html
摘要:項目構建基礎從屬于筆者的現代開發基礎系列文章,介紹了的歷史背景與多種構建工具對比,以及的基本配置安裝與使用本文涉及的參考資料聲明在學習與實踐資料索引以及學習與資料索引。 Maven 項目構建基礎從屬于筆者的現代 Java 開發基礎系列文章,介紹了 Maven 的歷史背景與多種構建工具對比,以及 Maven 的基本配置安裝與使用;本文涉及的參考資料聲明在 Java 學習與實踐資料索引以及...
摘要:清除構建緩存為每一個服務的構建環境提供緩存,項目會對的安裝目錄,配置目錄,和本地倉庫目錄提供了緩存,用戶通過以下設置清理緩存。本文檔詳細介紹了源碼構建項目時的各種詳細設置與操作。 概述 根據大量的Rainbond用戶反饋,我們發現在Rainbond源碼構建java-maven項目的過程中,最容易出現問題的一環就是獲取構件失敗。 比如: [ERROR] Failed to execute...
摘要:基本配置環境變量環境變量中添加為主目錄在中添加使用阿里云中央倉庫修改根目錄下文件夾中的文件,內容如下創建基于的項目使用命令行創建使用原型插件創建工程。 「博客搬家」 原地址: 簡書 原發表時間: 2017-03-23 Maven 是基于項目對象模型「POM」,可以通過一小段描述信息來管理項目的構建、報告和文檔的軟件項目管理工具。本文總結了 Maven 的基本用法。 1. Maven...
摘要:在之前,十個項目可能有十種構建方式,但通過,所有項目的構建命令都是簡單一致的。有利于促進項目團隊的標準化。手工勞動往往意味著低效,意味著容易出錯。這在很大程度上消除了重復。默認情況下,該文件夾下放置了本地倉庫。學習實戰許曉斌著 Introduction Maven是一個異常強大的構建工具,能夠幫我們自動化構建過程,從清理、編譯、測試到生成報告,再到打包和部署。通過Maven,我們只需要...
摘要:允許將反序列化為沒有附加注釋元數據不可變的類。包的庫經常會想支持多個版本的這樣做需要構建一個為每個版本的支持工件它介紹了如何區分這些工件的問題看到像不支持添加額外的元數據依賴關系的想法來指定他們需要什么版本的。 1.Defining a Lagom build(定義一個Lagom構建) 正如在Lagom構建哲學中已經討論過的那樣,使用Lagom,您可以自由地將所有服務組合在一個單獨的構...
閱讀 2625·2021-09-28 09:35
閱讀 3270·2021-09-03 10:28
閱讀 2922·2019-08-30 15:43
閱讀 1487·2019-08-30 14:04
閱讀 1819·2019-08-29 17:02
閱讀 1825·2019-08-26 13:59
閱讀 703·2019-08-26 11:51
閱讀 3269·2019-08-23 17:16