Maven
# 概述
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
# 示例
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung</groupId>
<artifactId>baeldung</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>com.baeldung</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<type>jar</type>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
//...
</plugin>
</plugins>
</build>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- modelVersion 指定了当前POM的版本,对于Maven 3来说,值只能是4.0.0
- groupId 创建这个项目的公司或小组唯一名称.通常是组织域名的倒序。
- artifactId 项目唯一ID
- version 项目版本
- packaging 包装方法(WAR、JAR、ZIP)
groupId、artifactId和version这三个元素定义了一个项目的基本坐标,在Maven的世界里,任何的jar和pom都是以基于这些坐标进行区分的。
dependencies可以包含一个或者多个dependency元素,以声明一个或多个项目依赖。
type指定了依赖的类型,默认为jar。
scope 指定了依赖的范围。 依赖范围有以下几种:
compile,默认的依赖范围,表示依赖需要参与当前项目的编译,后续的测试、运行周期也参与其中,是比较强的依赖。
test,表示依赖仅仅参与测试相关的工作,包括测试代码的编译和运行。比较典型的如junit。
runtime,表示依赖无需参与到项目的编译,不过后期的测试和运行需要参与其中。
provided,表示打包的时候可以不用包进去,别的容器会提供。和compile相当,但是在打包阶段做了排除的动作。
system,从参与程度来说,和provided类似,但不通过Maven仓库解析,可能会造成构建的不可移植,要谨慎使用。
# 常用命令
mvn clean: 表示运行清理操作(会默认把target文件夹中的数据清理)
mvn clean compile: 表示先运行清理之后运行编译,会将代码编译到target文件夹中。
mvn clean test:运行清理和测试。
mvn clean package:运行清理和打包。
mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
mvn clean deploy:运行清理和发布(发布到私服上面)。
1
2
3
4
5
6
2
3
4
5
6
上次更新: 2022/10/27