天天看點

maven clean/install/build/package指令行詳解(上)1 是什麼2 能幹什麼Maven vs Ant3 常用指令

1 是什麼

Apache的優秀開源項目,是Java項目的建構和管理工具。

Maven 是 Apache 組織下的一個跨平台的項目管理工具,它主要用來幫助實作項目的建構、測試、打包和部署。Maven 提供了标準的軟體生命周期模型和構模組化型,通過配置就能對項目進行全面的管理。它的跨平台性保證了在不同的作業系統上可以使用相同的指令來完成相應的任務。Maven 将建構的過程抽象成一個個的生命周期過程,在不同的階段使用不同的已實作插件來完成相應的實際工作,這種設計方法極大的避免了設計和腳本編碼的重複,極大的實作了複用。

2 能幹什麼

  1. 用maven友善的建立項目,基于archetype可以建立多種類型的java項目
  2. Maven倉庫對jar包(artifact)進行統一管理,避免jar檔案的重複拷貝和版本沖突
  3. 團隊開發,管理項目的RELEASE和SNAPSHOT版本,友善多子產品(Module)項目的各子產品之間的快速內建

簡介

本文将介紹基于 Apache Maven 3 的項目建構的基本概念和方法。Maven 是一套标準的項目建構和管理工具,使用統一規範的腳本進行項目建構,簡單易用,摒棄了 Ant 中繁瑣的建構元素,并具有較高的可重用性。讀完本文,你将了解 Maven 的基本概念和使用它進行項目建構的基本方法。

Maven vs Ant

Ant 也是 Apache 組織下的一個跨平台的項目建構工具,它是一個基于任務和依賴的建構系統,是過程式的。開發者需要顯示的指定每一個任務,每個任務包含一組由 XML 編碼的指令,必須在指令中明确告訴 Ant 源碼在哪裡,結果位元組碼存儲在哪裡,如何将這些位元組碼打包成 JAR 檔案。Ant 沒有生命周期,你必須定義任務和任務之間的依賴,還需要手工定義任務的執行序列和邏輯關系。這就無形中造成了大量的代碼重複。

Maven 不僅是一個項目建構工具還是一個項目管理工具。它有約定的目錄結構(表 1)和生命周期,項目建構的各階段各任務都由插件實作,開發者隻需遵照約定的目錄結建構立項目,再配置檔案中生命項目的基本元素,Maven 就會按照順序完成整個建構過程。Maven 的這些特性在一定程度上大大減少了代碼的重複。

3 常用指令

maven install

maven的install可以将項目本身編譯并打包到本地倉庫,這樣其他項目引用本項目的jar包時不用去私服上下載下傳jar包,直接從本地就可以拿到剛剛編譯打包好的項目的jar包,很靈活,避免每次都需要重新往私服釋出jar包的痛苦。

修改服務端比如manage層和dao層的項目的時候如果eclipse沒有自動編譯,則在調試的時候容易出很奇怪的錯誤,就是明明代碼已經改好了,但是debug的時候還是在報錯,這就是沒有項目沒有編譯完成造成的,看到的改好的代碼沒有變成class,是以,服務端的檔案改動之後如果發現沒有效果的時候要記得問題可能是沒有編譯,這時候可以使用maven的install指令編譯

IDEA可以很友善建立project和module,但是修改各個module的版本的時候,會遇到import報錯的情況,這就是maven倉庫中沒有對應的包,仍然需要使用到install,注意要使用lifecycle裡面的install

maven clean/install/build/package指令行詳解(上)1 是什麼2 能幹什麼Maven vs Ant3 常用指令

這樣就可以将已有的module打包到maven倉庫,再進行修改版本号,不會影響項目裡的其他module

mvn clean

清理環境,清除target檔案夾。

mvn compile

編譯,将Java源檔案編譯成class檔案。

mvn test

執行test目錄下的測試用例。

mvn package

打包,将Java工程打成jar包。

跳過單元測試:mvn clean package -Dmaven.test.skip=true