Maven 是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
src
|- main
|--java
|-- packages
|-- resources
|- test
|--java
|-- packages
-
groupID
项目组织的唯一标识符,实际对应 java 的包的结构,即 main目录里 java 的目录结构。
-
artifactID
项目的唯一标识符,实际对应项目的名称,就是项目根目录的名称。
groupId 和 artifactId 被统称为坐标。构件通过坐标作为其唯一标识。
groupId 一般为 组织名+公司地址反写+项目名
,比如 com.southeast.myprojects
artifactId 一般为 项目名-模块名
,比如myprojects-demo
则相应的 package 为 com.southeast.myprojects.demo
setting.xml 文件中配置:
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
setting.xml 文件中配置:
<localRepository>F:/Java/apache-maven-3.6.2-bin/repo</localRepository>
mvn - v
mvn compile
mvn test
mvn package
mvn clean
mvn install
mvn archetype:generate
# 按照提示进行选择
mvn archetype:generate -DgroupId=组织名,公司网址反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
-
指定当前 pom 版本
<modelVersion>
-
坐标
<groupId>反写公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <!-- 第一个 0 表示大版本号 第二个 0 表示分支版本号 第三个 0 表示小版本号 snapshot 快照 alpha 内部测试 beta 公测 Release 稳定 GA 正式发布 --> <version>0.0.1snapshot</version> <!-- 默认是 jar war zip pom --> <packaging>jar</packaging> <!-- 项目描述名 --> <name></name> <!-- 项目地址 --> <url></url>
-
依赖列表
<dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <!-- 依赖范围: compile 默认的范围,编译测试运行都有效 provided 编译测试时有效 runtime 测试运行时有效 test 只在测试时有效 system 与本机系统相关联,可移植性差 import 导入的范围,只使用在 dependencyManagement 中,表示从其他的 pom 中导入 dependency 的配置 --> <scope>test</scope> <!-- 设置依赖是否可选 --> <optional></optional> <!-- 排除依赖 --> <exclusions> <exclusion> <!-- 坐标 --> </exclusion> </exclusions> </dependency> </dependencies>
-
依赖管理
<dependencyManagement> <dependencies> <dependency></dependency> </dependencies> </dependencyManagement>
-
build 标签
<build> <!-- 插件列表 --> <plugins> <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin> </plugins> </build>
-
parent 标签(继承)
<parent> <!-- 坐标 --> </parent>
-
modules 标签(聚合)
<modules> <module></module> </modules>
路径1:A -> B -> C -> X(jar)
路径2:A -> D -> X(jar)
这里优先选择路径 2。
如果路径长度相同,则谁先声明,先解析谁。
、