天天看點

mvn管理項目jar包

maven是一個采用純java編寫的開 源項目管理工具。maven采用了一種被稱之為project object model (pom)概念來管理項目,所有的項目配置資訊都被定義在一個叫做pom.xml的檔案中,通過該檔案,maven可以管理項目的整個聲明周期,包括編 譯,建構,測試,釋出,報告等等。目前apache下絕大多數項目都已經采用maven進行管理。而maven本身還支援多種插件,可以友善更靈活的控制 項目。

1:http://maven.apache.org/download.html 下載下傳最新版本 maven 3.0.2 (binary zip)

mvn管理項目jar包

2:解壓到 d:

mvn管理項目jar包

3:配置環境變量

   maven_home : d:\apache-maven-3.0.2

   maven : %maven_home%\bin

  (可選) maven_opts : -xms256m -xmx512m

   在path 前面 加上 %maven%;

mvn管理項目jar包

4:驗證安裝是否成功

在指令行上輸入 : mvn -version; 回車,如看到下面資訊表示安裝成功:

mvn管理項目jar包

5:建立項目

在指令行上輸入 :mvn archetype:create -dgroupid=com.mycompany.app -dartifactid=my-app 回車,

mvn管理項目jar包

如果你是首次運作該指令(goal),maven将要花一些時間去把最新的工具包(maven 把它叫作artifacts)下載下傳到你的本地倉庫。

mvn管理項目jar包

指令執行完後你将看到maven生成了一個名為my-app的目錄,這個名字就是你在指令中指定的artifactid,進入該目錄,你将發現以下标準的項目結構:

mvn管理項目jar包

其中:src/main/java 目錄包含了項目的源代碼,src/test/java 目錄包含了項目的測試代碼,pom.xml是項目的項目對象模型(project object model or pom)。

6:pom

pom.xml 檔案是maven對一個項目的核心配置,這個檔案将包含你希望如何建構項目的大多數配置資訊。pom大而複雜,但你不用全部去了解,隻要使用一些常用的配置就可以了。下面列出這個pom的内容:

引用

<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"

  xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelversion>4.0.0</modelversion>

  <groupid>com.mycompany.app</groupid>

  <artifactid>my-app</artifactid>

  <version>1.0-snapshot</version>

  <packaging>jar</packaging>

  <name>my-app</name>

  <url>http://maven.apache.org</url>

  <properties>

    <project.build.sourceencoding>utf-8</project.build.sourceencoding>

  </properties>

  <dependencies>

    <dependency>

      <groupid>junit</groupid>

      <artifactid>junit</artifactid>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

</project>

7:第5步我們做了什麼

mvn archetype:create -dgroupid=com.mycompany.app -dartifactid=my-app

執行maven 指令(goal)archetype:create,并且設定了一些參數( -dgroupid=com.mycompany.app -dartifactid=my-app)

在這個指令中,字首 archetype 是包含create指令的一個maven的plugin。這個goal指令根據項目原型(符合maven标準的項目模闆)建立了一個簡單的項目。

現在可以确定地說,一個maven plugin 就是一些有着相同目的的goals指令的集合,例如 jboss-maven-plugin 這個插件,就是為了處理各種和jboss相關的任務。

8:build 項目

在指令行上 輸入 : cd my-app 回車,進入到 項目路徑下

mvn管理項目jar包

再輸入 mvn package 回車這時指令行将會列印出各種動作,并且以下面一段資訊結束:

mvn管理項目jar包

與首次執行的指令(那是一個goal)

archetype:create

不同,這次執行的隻是一個簡單的指令---package。不同于goal,這是一個phase(階段),一個phase是指建構生命周期的一個階段,建構生命周期是指有序的一系列phase。當給出一個phase,maven将執行所有的在此階段前的phase及其自身,例如,如果我們執行compile階段,實際上執行的階段有:

validate

generate-sources

process-sources

generate-resources

process-resources

compile

你可以使用以下的指令來測試新編譯和打包出來的jar包,

java -cp target/my-app-1.0-snapshot.jar com.mycompany.app.app

這時将列印出最經典的:

hello world!

mvn管理項目jar包

9:運作maven工具

雖然很難列出一張非常全面的表,但在此可先列出最普通的預設的生命周期階段:

validate:驗證工程是否正确,所有需要的資源是否可用。

compile:編譯項目的源代碼。  

test:使用合适的單元測試架構來測試已編譯的源代碼。這些測試不需要已打包和布署。

package:把已編譯的代碼打包成可釋出的格式,比如jar。

integration-test:如有需要,将包處理和釋出到一個能夠進行內建測試的環境。

verify:運作所有檢查,驗證包是否有效且達到品質标準。

install:把包安裝在本地的repository中,可以被其他工程作為依賴來使用。

deploy:在內建或者釋出環境下執行,将最終版本的包拷貝到遠端的repository,使得其他的開發者或者工程可以共享。

clean:清除先前建構的artifacts(在maven中,把由項目生成的包都叫作artifact)。

site:為項目生成文檔站點。

上面列出的各個phases(階段)實際上對應着潛在的goals,特殊的每個階段執行的特殊的goals由項目的類型所決定,例如:如果項目的類型是jar,package階段将預設執行jar:jar的goals,如果項目類型是war,那麼package階段執行的goals将是war:war。

有件有趣的事情需要注意,那就是phases和goals需要按一定的順序來執行。

mvn clean dependency:copy-dependencies package

這個指令将先清除項目,然後拷貝依賴,最後把項目打包,當然,在打包之前,會先執行此階段之前的階段.如compile,test等.

生成站點

mvn site

這個階段生成基于pom.xml配置的項目資訊。你可以在target/site目錄下看到生成的文檔。