《Maven官方指南》url:
http://ifeve.com/m2-getting-started/
Maven基本是一個項目管理和理解的工具就提供一種方式讓我們管理:
- 構建
- 文檔
- 報表
- 依賴
- SCMs
- 發佈
- 分佈式
創建簡單的Maven項目,從命令行執行以下:
mvn -B archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DgroupId=com.mycompany.app \
-DartifactId=my-app
pom.xml 包含項目的項目對象模型。pom重要標籤:
- project 這是Maven pom.xml文件中最頂級的節點。
- modelVersion 這個節點指示 POM的對象模型試驗什麼版本。模型的版本改變非常少但是這是強制性的爲了確定使用的穩定性和當Maven開發者認爲至爲重要的是改變這個模型。
- groupld 這個節點指示是創建項目的組織或組的唯一標識符。這個groupId是項目鍵標識符的其中一個和通常基於完整有資格的組織的領域名字。例子:org.apache.maven.plugins 是設計的一個組對於所有Maven插件。
- artifactId 這個節點指示是私有工件本被項目生成的唯一基本名字。這個項目的私有工件通常是一個JAR文件。第二,工件像源碼捆也用於這個工件作爲他們最終的名字。一個通常的由Maven生成的工件會有表單<artifactId>-<version>.<extension>(例如 myapp-1.0.jar)。
- packaging 這個節點是用於這個工件肺打包類型(例如 JAR,WAR,EAR 等等)。這不僅意味着工件生成的是JAR,WAR,EAR但是指示是一個指定生命週期使用,作爲構建進程的一部分。(這個週期是一個話題我們將處理並進一步研究在這個指南里。對於現在,只要記住項目的packaging指示可以作爲一部分在自定義構建週期中。)packaging的默認值是JAR 所以你不需爲大部分項目指定。
- version 這個節點指示着這個工件被創建的版本。Maven 有很長的一段路來幫助你管理版本和你經常看的SNAPSHOT指示器在這個版本中,它表示這這個項目是正在開發的狀態。我們將討論快照的使用和他們怎麼進一步使用在指南中。
- name 這個節點指示這項目顯示名字,這是經常使用Maven的生成文件。
- url 此元素指示項目的網站可在何處找到。這是經常使用Maven的生成文件。
- description 此元素爲您的項目提供基本說明。這是經常使用Maven的生成文件。
項目的原型生成之後,您還將注意到以下目錄結構已被創建:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
如果你想簡單編譯你的測試代碼(但是不執行測試代碼),你可以執行:
mvn test-compile
關於項目基本信息是執行下面的指令:
mvn site
有許多其他的獨立目標也可以執行,例如:
mvn clean
這將在開始之前將所有生成數據移除target目錄,以便它是新的。 也許你想IntelliJ理念產生的描述符的項目,是嗎?
mvn idea:idea
這可以運行在以前的想法項目的頂部-它會更新設置,而不是開始就是新的。 如果你是Eclipse IDE,執行:
mvn eclipse:eclipse
怎麼使用插件?
每當你想要定製Maven項目的建設,這是通過增加或重新配置插件做的。 爲Maven 1.0用戶的筆記: 在1.0中,你將加入一些 preGoal到maven.xml文件中和一些實體到project.properties.這裏有一點不同在這個例子,我們將配置運行使用JDK 5.0編譯編譯源碼。這是簡單添加到你的POM:
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
...
這是被Maven使用的規則:任何目錄和文件放置在 ${basedir}/src/main/resources 目錄就會被打包到你的JAR,確切相同的結構在JAR的開始目錄。
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- app
| | `-- App.java
| `-- resources
| `-- META-INF
| `-- application.properties
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
添加資源到你的單元測試中,你遵循相同的模式作爲你的資源添加到罐子裏除了你的目錄的地方資源爲${basedir}/src/test/resources。在這一點上,您將有一個項目目錄結構,看起來如下:
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- app
| | `-- App.java
| `-- resources
| `-- META-INF
| |-- application.properties
`-- test
|-- java
| `-- com
| `-- mycompany
| `-- app
| `-- AppTest.java
`-- resources
`-- test.properties
在單元測試中,您可以使用如下代碼來訪問測試所需的資源:
...
// Retrieve resource
InputStream is = getClass().getResourceAsStream( "/test.properties" );
// Do something with the resource
...
讓我們加入一對屬性到 application.properties文件(我們放在src/main/resources ,目錄)那些值將會被支持在資源被過濾的時候。
# application.properties
application.name=${project.name}
application.version=${project.version}
在這裏,你可以執行下面的命令(進程資源是在構建週期裏的資源會被拷貝和過濾)
mvn process-resources
怎麼創建文檔?
讓你開始使用Maven的文件系統,你可以使用原型機制來生成一個網站的現有項目中使用以下命令
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-site \
-DgroupId=com.mycompany.app \
-DartifactId=my-app-site
注意,生命週期適用於任何項目類型。例如,回到基本目錄中,我們可以創建一個簡單的web應用程序:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-webapp \
-DgroupId=com.mycompany.app \
-DartifactId=my-webapp
怎麼同時建立多個項目?
處理多個模塊的概念是建立在Maven。在本節中,我們將展示如何建立上面的WAR,幷包括以前的jar,以及在一個步驟。
首先,我們需要在上面其他兩項目加上父目錄和pom.xml文件,所以它看起來應該像這樣:
+- pom.xml
+- my-app
| +- pom.xml
| +- src
| +- main
| +- java
+- my-webapp
| +- pom.xml
| +- src
| +- main
| +- webapp