1.project
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
- xml:定义XML版本和编码。
- project:根元素,定义了Maven项目。
- xsi:schemaLocation:指定了XML Schema的位置。
- xmlns:定义了命名空间。
- modelVersion:指定POM模型的版本。
XML Schema 是一种用于定义 XML 文档结构和内容的语言。它提供了一种方法来描述 XML 文档的元素和属性的合法结构、数据类型和约束。XML Schema 由 W3C(World Wide Web Consortium)定义,是 XML DTD(Document Type Definition)的替代方案,提供了更强大的数据类型支持和更严格的验证规则。
⭕️ XML Schema 对你的项目和所使用的 Maven 依赖有以下几个方面的影响:
- POM 文件的验证:XML Schema 用于验证你的 pom.xml 文件的结构和内容是否符合 Maven 的规范。通过指定 xsi:schemaLocation,Maven 可以确保你的 POM 文件是正确的,并且符合 XML Schema 定义的规则。
- 依赖管理:XML Schema 确保你的依赖声明是正确的,包括 groupId、artifactId、version 等标签的使用。它帮助 Maven 解析和处理这些依赖,确保它们能够正确地下载和集成到你的项目中。
- 构建过程:在构建过程中,Maven 使用 XML Schema 来解析和验证 POM 文件中的构建配置。这包括插件配置、构建生命周期的定义等。确保这些配置是正确的,有助于避免构建错误。
- 扩展性和兼容性:XML Schema 提供了一个标准化的方式来定义和验证 XML 文档,这使得你的 POM 文件在不同的工具和环境中具有更好的兼容性和可扩展性。
2.modules
<modules>
<module>apro</module>
<module>bpro</module>
</modules>
- modules:标签用于定义一个多模块项目的子模块。
- 多模块项目允许你将一个大型项目拆分成多个子模块,每个子模块都有自己的 pom.xml 文件,但它们共享父项目的配置。
- module:指定子模块的相对路径。
- 每个子模块都需要一个
<module>
标签
- 每个子模块都需要一个
3.scm
<scm>
<connection>scm:git:git@github.xxx.com:projectname.git</connection>
<developerConnection>scm:git:git@github.xxx.com:projectname.git</developerConnection>
<url>https://github.xxx.com/projectname.git</url>
</scm>
- scm:标签用于定义项目的源代码管理(Source Code Management)信息。它包含了项目的版本控制系统的相关信息,如连接 URL 和开发者连接 URL。
- connection:指定只读的 SCM 连接 URL。
- developerConnection:指定开发者使用的 SCM 连接 URL,通常是读写权限。
- url:指定项目的浏览 URL。
4.parent
<parent>
<groupId>parent_groupId</groupId>
<artifactId>parent_artifactId</artifactId>
<version>${revision}${name}${changelist}</version>
<relativePath>..</relativePath>
</parent>
- parent:定义了父POM,继承其配置。
- groupId:父项目的组ID(就是项目路径)。
- artifactId:父项目的工件ID(就是项目名)。
- version:父项目的版本。
- relativePath:父POM的相对路径(指定当前项目的 pom.xml 文件相对于父项目的 pom.xml 文件的路径,仅在此可用)
5.properties
<properties>
<revision>0.0.1</revision>
<name>-projectname</name>
<changelist>-SNAPSHOT</changelist>
<io.swagger.v3.annotations.version>2.2.9</io.swagger.v3.annotations.version>
<testcontainers.version>1.19.6</testcontainers.version>
<io.swagger.annotations.version>1.6.10</io.swagger.annotations.version>
<swagger.plugin.version>2.1.2</swagger.plugin.version>
<m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
</properties>
- properties:定义了项目的属性。
- revision、name、changelist:用于版本控制;如 0.0.1-raptorio-SNAPSHOT。
- revision:表示项目的修订版本号,通常用于标识项目的主要版本。
- name:表示项目的名称或标识符,通常用于区分不同的项目或模块。
- changelist:表示项目的变更列表或快照版本,通常用于标识项目的开发或测试版本。
- io.swagger.v3.annotations.version、testcontainers.version、io.swagger.annotations.version、swagger.plugin.version:定义了依赖的版本。
- m2eclipse.wtp.contextRoot:Eclipse插件的配置。
changelist 通常用于标识项目的变更列表或快照版本。常见的值包括:
- -SNAPSHOT:表示这是一个快照版本,通常用于开发阶段。
- -RELEASE:表示这是一个发布版本。
- -BETA:表示这是一个测试版本。
- -ALPHA:表示这是一个早期测试版本。
6.dependencyManagement
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-jackson_2.12</artifactId>
<version>3.5.3</version>
</dependency>
</dependencies>
</dependencyManagement>
- dependencyManagement:用于管理依赖的版本。
- dependencies:包含多个依赖。
- dependency:定义了一个依赖。
- groupId:依赖的组ID。
- artifactId:依赖的工件ID。
- version:依赖的版本。
- dependency:定义了一个依赖。
dependencyManagement 在 Maven 项目中用于集中管理依赖版本和范围。它允许你在父 pom.xml 文件中定义依赖的版本和范围,这样子项目就不需要重复定义这些信息,只需引用依赖即可(子依赖依然声明了版本则以自己的为准)。
7.dependencies
<dependencies>
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-jackson_2.12</artifactId>
</dependency>
</dependencies>
- dependencies:定义了项目的具体依赖。
- dependency:定义了一个依赖。
- groupId:依赖的组ID。
- artifactId:依赖的工件ID。
8.build
<build>
<plugins>
<plugin>
<!-- 插件配置省略 -->
</plugin>
</plugins>
</build>
- build:定义了构建过程的配置。
- plugins:包含多个插件。
- plugin:定义了一个插件。
9.mvn 命令
命令/参数 | 说明 |
---|---|
mvn clean | 清理项目,删除 target 目录。 |
mvn compile | 编译项目的源代码。 |
mvn test | 运行项目的测试。 |
mvn package | 编译项目并打包成 JAR 或 WAR 文件。 |
mvn install | 将打包的 JAR 或 WAR 文件安装到本地 Maven 仓库。 |
mvn deploy | 将打包的 JAR 或 WAR 文件部署到远程 Maven 仓库。 |
mvn site | 生成项目的站点文档。 |
mvn validate | 验证项目是否正确且所有必要信息是否可用。 |
mvn verify | 运行任何集成测试,验证项目是否准备好进行安装和部署。 |
mvn dependency:tree | 显示项目的依赖树。 |
mvn help:describe -Dcmd=<command> | 显示指定命令的详细信息。 |
mvn versions:set -DnewVersion=<version> | 设置项目的新版本。 |
mvn release:prepare | 准备项目的发布。 |
mvn release:perform | 执行项目的发布。 |
-D<property>=<value> | 定义系统属性。 |
-P<profile_name> | 指定要激活的构建配置文件(profile)。 |
-f <path_to_pom> | 指定要使用的 pom.xml 文件。 |
-pl <module_name> | 指定要构建的模块列表。 |
-am | 与 -pl 一起使用,表示同时构建指定模块的依赖模块。 |
-o | 离线模式,不从远程仓库下载依赖。 |
-U | 强制更新快照版本的依赖。 |
-X | 启用调试输出。 |
-e | 显示完整的错误信息。 |
-B | 启用批处理模式,不需要用户交互。 |
-T <threads> | 启用多线程构建,指定线程数。 |
mvn exec:java | 运行一个 Java 程序。 |
mvn dependency:resolve | 解析并下载项目的所有依赖。 |
mvn dependency:analyze | 分析项目的依赖,找出未使用的依赖和未声明的依赖。 |
mvn dependency:purge-local-repository | 清除本地仓库中的特定依赖。 |
mvn archetype:generate | 根据原型生成一个新的 Maven 项目。 |
mvn scm:checkin | 将更改提交到 SCM(源代码管理)。 |
mvn scm:update | 从 SCM 更新项目。 |
mvn help:effective-pom | 显示项目的有效 POM,包含所有继承和聚合的配置。 |
mvn help:effective-settings | 显示 Maven 的有效设置,包括所有的继承和聚合。 |