Apache Maven 是一套软件工程管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。
下载
在 Maven官网 上下载 Maven
的安装包。
安装
本文以 Windows 下的安装为例,需提前配置好 Java
环境。Java
环境的配置方法看这里。
- 将下载的文件解压到任意目录,如:
D:\Program Files\Java\tools\apache-maven-3.3.9
- 添加如下环境变量:
M2_HOME=D:\Program Files\Java\tools\apache-maven-3.3.9
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
并在Path环境变量末尾添加 %M2%
- 验证安装
打开命令控制台 输入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
文件夹中,如果没有该文件夹则手动创建。
小提示:windows上无法正常创建以.
开头的文件,创建文件的时候可以在后面多加一个.
例如:创建文件夹的时候这样写.m2.
,生成的文件夹则为.m2
。用文本编辑器打开新拷贝的
settings.xml
文件,在<mirrors>...</mirrors>
标签中添加如下内容:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
这里使用了 aliyun
的 maven
仓库,可以加快下载依赖的速度。
现在,我们就可以使用 maven
来管理我们的项目了。
来一个官方的例子
创建一个项目
- 新建一个文件夹,在命令行中切换到该目录并运行如下命令
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
命令执行成功后你会发现 maven
在当前目录下新建了一个文件夹,文件夹的名称就是 artifactId
属性的值 my-app
。
- 切换到
my-app
目录下,你会看到如下目录结构:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
这是 maven
项目的标准目录结构。
src/main/java
文件夹包含项目的源代码,src/test/java
文件夹包含着测试代码,pom.xml
文件为项目的项目对象模型(Project Object Model),简称 POM。
POM
pom.xml
包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。
pom.xml
也包含了目标和插件。当执行一个任务或者目标时,Maven 会查找当前目录下的 pom.xml
,从其中读取所需要的配置信息,然后执行目标。
打开刚才生成的 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
元素和三个必须的字段:groupId
,artifactId
,version
- 在仓库中的工程标识为
groupId:artifactId:version
-
pom.xml
的根元素是project
,它有三个主要的子节点:
节点 | 描述 |
---|---|
groupId |
这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,com.mycompany.app 。 |
artifactId |
这是工程的标识。它通常是工程的名称。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。 |
version |
这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。 |
打包
mvn package
构建成功后项目根目录下会生成一个 target
文件夹,文件夹中有一个 my-app-1.0-SNAPSHOT.jar
文件,这就是项目最终生成的 jar
包。
运行
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
此时控制台会打印出 Hello World!