2020年8月11日 星期二

Maven-項目建構過程練習


更新時間:08/11/2020

前言

上一篇安裝了Maven,此篇先來實作一下,感受一下專案管理及自動構建工具的魅力吧!

一、創建 Maven 專案

1.1 建立 Hello 專案:
1.1.1) 首先建立Hello項目,同時建立Maven約定的目錄結構和pom.xml文件。
在CMD中使用命令,建構Maven預設的專案(maven-archetype-quickstart),來達到快速建立約定的目錄結構和pom.xml文件。操作流程如下圖所示:
i.) 打開CMD
ii.) 使用上述指令:mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
iii.) 設定groupId,通常為公司網域翻轉。例如公司網域為www.google.com,則設定groupId就會變成com.google。
iv.) 設定artifactId,此為專案名稱。此篇文章使用Hello。
v.) 設定version,此篇文章不輸入,直接按Enter。
vi.) 設定package,此篇文章不使用多層目錄結構,但其預設為您的groupId目錄結構,故移除預設目錄,打上../../../,代表以現在的目錄再往回三層。
vii.) 確定(iii)~(vi)輸入的資料是否正確,正確打上y,不正確打上n


成功建立後,查看Maven專案的目錄結構。
Maven專案的目錄結構在最外層有一個pom.xml,並擁有一個src資料夾。src資料夾內再分成兩個資料夾main與test,其中main資料夾存放java原始碼與resources資源;而test資料夾則是存放單元測試用的原始碼。
除了使用上述的 maven-archetype-quickstart 來建立之外,還有許多不同的預設目錄結構,詳細資料請參閱官網 Maven Archetypes
1.2 pom.xml:
Project Object Model,是Maven管理專案的配置檔,所有的依賴jar檔,抑或是Maven插件都在此檔案配置。此篇不討論詳細內容。
產出的pom.xml內容如下:

二、撰寫簡單的程式碼

2.1 寫一個會說Hello的類別:
刪除src/main/java目錄與src/test/java目錄下的檔案(即刪除的App.java與AppTest.java檔案)。
在src/main/java目錄下,建立一個Hello.java
在src/test/java目錄下,建立一個HelloTest.java

三、使用Maven編譯、清理、測試、打包項目

打開CMD,切換到Hello專案。

3.1) 使用Maven編譯項目,編譯項目的命令是:"mvn compile"。
初次使用Maven時,因為"本地倉庫"並沒有任何相關資源,故執行時,依照pom.xml的配置從"遠端倉庫"下載資源。








編譯成功之後,可以看到hello項目的根目錄下多了一個【target】文件夾,這個文件夾就是編譯成功之後Maven幫我們生成的文件夾,如下圖所示:


打開【target】文件夾,可以看到裡面有一個【classes】文件夾,如下圖所示:


【classes】文件夾中存放的就是Maven我們編譯好的java類,如下圖所示:


這就是使用Maven自動編譯項目的過程。

3.2) 使用Maven清理項目,清理項目的命令是:"mvn clean"。
進入Hello專案根目錄執行"mvn clean"命令清理項目,清理項目的過程就是把執行"mvn compile"命令編譯項目時生成的target文件夾刪掉,如下圖所示:

3.3) 使用Maven測試項目,測試項目的命令是:"mvn test"。
進入Hello項目根目錄執行"mvn test"命令測試項目,如下圖所示:




測試成功之後,可以看到hello項目的根目錄下多了一個【target】文件夾,這個文件夾就是測試成功之後Maven幫我們生成的文件夾,如下圖所示:

也就是說,我們執行執行"mvn test"命令測試項目時,Maven先幫我們編譯項目,然後再執行測試代碼。

3.4) 使用Maven打包項目,打包項目的命令是:"mvn package"。
進入Hello項目根目錄執行"mvn package"命令測試項目,如下圖所示:




打包成功之後,可以看到hello項目的根目錄下的【target】文件夾中多了一個Hello-0.0.1-SNAPSHOT.jar,這個Hello-0.0.1-SNAPSHOT.jar就是打包成功之後Maven幫我們生成的jar文件,如下圖所示:



3.5) 使用Maven部署項目,部署項目的命令是::"mvn install"。
進入Hello項目根目錄執行"mvn install"命令測試項目,如下圖所示:




安裝成功之後,首先會在hello項目的根目錄下生成【target】文件夾,打開【target】文件夾,可以看到裡面會有Hello-1.0-SNAPSHOT.jar,這個Hello-1.0-SNAPSHOT.jar就是安裝成功之後Maven幫我們生成的jar文件,如下圖所示:


除此之外,在我們存放Maven下載下來的jar包的倉庫也會有一個Hello-1.0-SNAPSHOT.jar,所以Maven安裝項目的過程,實際上就是把項目進行【清理】→【編譯】 →【測試】→【打包】,再把打包好的jar放到我們指定的存放jar包的Maven倉庫中,如下圖所示:


所以使用"mvn install"命令,就把maven構建項目的【清理】→【編譯】→【測試】→【打包】的這幾個過程都做了,同時將打包好的jar包發佈到本地的Maven倉庫中。

3.6) 組合使用Maven的命令。
maven的編譯,清理,測試,打包,部署命令是可以幾個命令同時組合起來使用的,常用的命令組合如下:
3.6.1) 先清理再編譯:"mvn clean compile",如下所示:


3.6.2) 先清理再測試:"mvn clean test"
3.6.3) 先清理再打包:"mvn clean package"
3.6.4) 先清理再安裝:"mvn clean install"
這些組合命令都比較常用,以上就是關於Maven構建項目的各個個過程演示。

三、使用自己編譯好的jar檔

3.2) 新增一個HelloFriend專案:
使用預設的maven-archetype-quickstart建立專案,並刪除App.java和AppTest.java檔案


3.2) 編輯HelloFriend專案中之pom.xml文件:
在pom.xml文件中,找到<dependencies>標籤,並在其中引入已安裝進本地倉庫的「Hello」專案的依賴。
您會發現,預設的專案中有使用到junit第三方套件。在上一節中,我們寫了一個單元測試HelloTest.java,就有使用到此依賴。

3.3) 在src/main/java目錄下新建文件HelloFriend.java,代碼如下:

3.4) 在src/test/java目錄下新建文件HelloFriendTest.java,代碼如下:

3.5) 在HelloFriend專案目錄下執行"mvn package",測試Hello-1.0-SNAPSHOT.jar是否有成功引用:
在HelloFriend類別中,我們呼叫了Hello類別內的sayHello方法,並且成功在單元測試中通過測試。在畫面中可以看見我們傳接過後的文字,結果如下:



上一篇:Maven - 環境建置

1 則留言:

  1. The Best and Most Hottest Spicy Sauces In the World - Titanium
    From titanium curling iron black vinegar to yellow habanero peppers, it is the titanium dioxide sunscreen most popular sauce to eat, at most. We've titanium tubing listed the titanium color hottest spicier 2019 ford fusion hybrid titanium

    回覆刪除