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!