Apache Maven 是一套軟件工程管理和整合工具。基于工程對(duì)象模型(POM)的概念野瘦,通過一個(gè)中央信息管理模塊,Maven 能夠管理項(xiàng)目的構(gòu)建预愤、報(bào)告和文檔。
下載
在 Maven官網(wǎng) 上下載 Maven
的安裝包咳胃。
安裝
本文以 Windows 下的安裝為例植康,需提前配置好 Java
環(huán)境。Java
環(huán)境的配置方法看這里展懈。
- 將下載的文件解壓到任意目錄销睁,如:
D:\Program Files\Java\tools\apache-maven-3.3.9
- 添加如下環(huán)境變量:
M2_HOME=D:\Program Files\Java\tools\apache-maven-3.3.9
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
并在Path環(huán)境變量末尾添加 %M2%
- 驗(yàn)證安裝
打開命令控制臺(tái) 輸入mvn -v
,輸出如下信息則安裝成功标沪。
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\Program Files\Java\tools\apache-maven-3.3.9
Java version: 1.8.0_102, vendor: Oracle Corporation
Java home: D:\Program Files\Java\jdk1.8.0_102\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
配置
從
maven
安裝目錄下的conf
目錄中拷貝一份settings.xml
文件到%HOME%\.m2
文件夾中榄攀,如果沒有該文件夾則手動(dòng)創(chuàng)建。
小提示:windows上無法正常創(chuàng)建以.
開頭的文件金句,創(chuàng)建文件的時(shí)候可以在后面多加一個(gè).
例如:創(chuàng)建文件夾的時(shí)候這樣寫.m2.
檩赢,生成的文件夾則為.m2
。用文本編輯器打開新拷貝的
settings.xml
文件违寞,在<mirrors>...</mirrors>
標(biāo)簽中添加如下內(nèi)容:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
這里使用了 aliyun
的 maven
倉庫贞瞒,可以加快下載依賴的速度。
現(xiàn)在趁曼,我們就可以使用 maven
來管理我們的項(xiàng)目了军浆。
來一個(gè)官方的例子
創(chuàng)建一個(gè)項(xiàng)目
- 新建一個(gè)文件夾,在命令行中切換到該目錄并運(yùn)行如下命令
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
命令執(zhí)行成功后你會(huì)發(fā)現(xiàn) maven
在當(dāng)前目錄下新建了一個(gè)文件夾挡闰,文件夾的名稱就是 artifactId
屬性的值 my-app
乒融。
- 切換到
my-app
目錄下掰盘,你會(huì)看到如下目錄結(jié)構(gòu):
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
這是 maven
項(xiàng)目的標(biāo)準(zhǔn)目錄結(jié)構(gòu)。
src/main/java
文件夾包含項(xiàng)目的源代碼赞季,src/test/java
文件夾包含著測試代碼愧捕,pom.xml
文件為項(xiàng)目的項(xiàng)目對(duì)象模型(Project Object Model),簡稱 POM申钩。
POM
pom.xml
包含了關(guān)于工程和各種配置細(xì)節(jié)的信息次绘,Maven 使用這些信息構(gòu)建工程。
pom.xml
也包含了目標(biāo)和插件撒遣。當(dāng)執(zhí)行一個(gè)任務(wù)或者目標(biāo)時(shí)邮偎,Maven 會(huì)查找當(dāng)前目錄下的 pom.xml
,從其中讀取所需要的配置信息义黎,然后執(zhí)行目標(biāo)禾进。
打開剛才生成的 pom.xml
:
<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>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 所有的
pom.xml
文件需要project
元素和三個(gè)必須的字段:groupId
,artifactId
廉涕,version
- 在倉庫中的工程標(biāo)識(shí)為
groupId:artifactId:version
-
pom.xml
的根元素是project
命迈,它有三個(gè)主要的子節(jié)點(diǎn):
節(jié)點(diǎn) | 描述 |
---|---|
groupId |
這是工程組的標(biāo)識(shí)。它在一個(gè)組織或者項(xiàng)目中通常是唯一的火的。例如,com.mycompany.app 淑倾。 |
artifactId |
這是工程的標(biāo)識(shí)馏鹤。它通常是工程的名稱。groupId 和 artifactId 一起定義了 artifact 在倉庫中的位置娇哆。 |
version |
這是工程的版本號(hào)湃累。在 artifact 的倉庫中,它用來區(qū)分不同的版本碍讨。 |
打包
mvn package
構(gòu)建成功后項(xiàng)目根目錄下會(huì)生成一個(gè) target
文件夾治力,文件夾中有一個(gè) my-app-1.0-SNAPSHOT.jar
文件,這就是項(xiàng)目最終生成的 jar
包勃黍。
運(yùn)行
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
此時(shí)控制臺(tái)會(huì)打印出 Hello World!