Maven 入门
2017-03-27 by dongnan
安装 maven
Linux 安装 maven
非常简单,请参考这里。
mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_101, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el6_8.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.2.2.el7.x86_64", arch: "amd64", family: "unix"
使用 maven
创建一个项目
第一次执行这个命令可能需要一些时间。这是因为 Maven
会自动下载依赖包(jar插件和其他文件)到你的 maven
本地仓库。
mvn archetype:generate -DgroupId=com.mycompany.app \
-DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
[INFO] Scanning for projects...
#...省略
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.jar (5 KB at 6.1 KB/sec)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /
[INFO] Parameter: package, Value: com.mycompany.app
[INFO] Parameter: groupId, Value: com.mycompany.app
[INFO] Parameter: artifactId, Value: my-app
[INFO] Parameter: packageName, Value: com.mycompany.app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /my-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:55 min
[INFO] Finished at: 2017-03-14T13:09:22+08:00
[INFO] Final Memory: 14M/99M
[INFO] ------------------------------------------------------------------------
我的 maven
本地仓库路径
file ~/.m2/
/root/.m2/: directory
项目的目录结构
tree my-app/
my-app/
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mycompany
│ └── app
│ └── App.java
└── test
└── java
└── com
└── mycompany
└── app
└── AppTest.java
11 directories, 3 files
其中,src/main/java
目录包含项目源代码,src/test/java
目录包含检查源代码,pom.xml
是项目的项目对象模型,或POM
。
POM文件
在 Maven
里,pom.xml
文件是项目配置的核心。它是一个独立的配置文件,包含了你想要的方式下建立项目所必须的主要信息。
cat my-app/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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
构建项目
cd my-app && mvn package
#...省略
[INFO] Building jar: /my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:55 min
[INFO] Finished at: 2017-03-14T13:44:50+08:00
[INFO] Final Memory: 16M/146M
[INFO] ------------------------------------------------------------------------
打包完成后在项目目录会创建一个子目录 target
ls target/
classes maven-archiver maven-status my-app-1.0-SNAPSHOT.jar surefire-reports test-classes
可以使用命令测试编译好的 JAR
包
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Hello World!
Maven阶段
尽管几乎没有一个全面的清单,这些都是执行最常用的默认生命周期阶段。
- validate:验证项目是正确的,所有必要的信息。
- compile:编译项目的源代码。
- test:使用合适的单元测试框架测试编译的源代码。 这些测试应该不需要代码被打包或部署。
- package:把编译后的代码,并在其分发格式打包,例如一个JAR包。
- integration-test:如果需要,处理和部署包到集成测试可以运行的环境。
- verify:运行任何检查,以验证包是有效的,同时符合质量标准。
- install:包安装到本地仓库中,用作本地其他项目的依赖。
- deploy:在集成或发布环境中进行,复制最终的包到远程仓库与其他开发者和项目共享。
- clean:清理之前建立构建的工件。
- site:生成此项目的站点文档。
内容来自: