- Maven教程
- Maven - 主页
- Maven - 概述
- Maven - 环境设置
- Maven-POM
- Maven - 构建生命周期
- Maven - 构建配置文件
- Maven - 存储库
- Maven - 插件
- Maven - 创建项目
- Maven - 构建和测试项目
- Maven - 外部依赖项
- Maven - 项目文档
- Maven - 项目模板
- Maven - 快照
- Maven - 构建自动化
- Maven - 管理依赖关系
- Maven - 部署自动化
- Maven - Web 应用程序
- Maven - Eclipse IDE
- Maven - NetBeans
- Maven-IntelliJ IDEA
- Maven 有用资源
- Maven - 问题与解答
- Maven - 快速指南
- Maven - 有用的资源
- Maven - 讨论
Maven-POM
POM 代表项目对象模型。它是 Maven 中的基本工作单元。它是一个 XML 文件,作为 pom.xml 驻留在项目的基目录中。
POM 包含有关项目的信息以及 Maven 用于构建项目的各种配置详细信息。
POM 还包含目标和插件。在执行任务或目标时,Maven 在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。可以在 POM 中指定的一些配置如下:
- 项目依赖关系
- 插件
- 目标
- 建立档案
- 项目版本
- 开发商
- 邮件列表
在创建 POM 之前,我们应该首先确定项目组(groupId)、项目名称(artifactId)和版本,因为这些属性有助于唯一标识存储库中的项目。
POM 示例
<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.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version> </project>
需要注意的是,每个项目都应该有一个 POM 文件。
所有 POM 文件都需要项目元素和三个必填字段:groupId、artifactId、version。
存储库中的项目符号为groupId:artifactId:version。
POM 的最低要求 -
先生。 | 节点及描述 |
---|---|
1 | 项目根目录 这是项目根标签。您需要指定基本架构设置,例如 apache 架构和 w3.org 规范。 |
2 | 型号版本 模型版本应为 4.0.0。 |
3 | 组ID 这是项目组的 ID。这在组织或项目中通常是独一无二的。例如,银行集团 com.company.bank 拥有所有与银行相关的项目。 |
4 | 工件ID 这是项目的 ID。这通常是项目的名称。例如,消费者银行业务。artifactId 与 groupId 一起定义了工件在存储库中的位置。 |
5 | 版本 这是该项目的版本。它与 groupId 一起在工件的存储库中使用,以将版本彼此分开。例如 - com.company.bank:消费者银行业务:1.0 com.company.bank:消费者银行业务:1.1。 |
超级聚甲醛
Super POM 是 Maven 的默认 POM。所有 POM 均继承自父项或默认项(无论是否明确定义)。该基础 POM 称为Super POM,包含默认继承的值。
Maven使用有效的POM(来自超级pom的配置加上项目配置)来执行相关目标。它帮助开发人员在他/她的 pom.xml 中指定最小配置细节。尽管配置可以很容易地被覆盖。
查看超级 POM 默认配置的一个简单方法是运行以下命令:mvn help: effective-pom
在计算机上的任意目录中创建 pom.xml。使用上述示例 pom 的内容。
在下面的示例中,我们在 C:\MVN\project 文件夹中创建了一个 pom.xml。
现在打开命令控制台,进入包含 pom.xml 的文件夹并执行以下mvn命令。
C:\MVN\project>mvn help:effective-pom
Maven 将开始处理并显示 effective-pom。
C:\MVN>mvn help:effective-pom [INFO] Scanning for projects... [INFO] [INFO] ---------------< com.companyname.project-group:project >---------------- [INFO] Building project 1.0 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-help-plugin:3.2.0:effective-pom (default-cli) @ project --- [INFO] Effective POMs, after inheritance, interpolation, and profiles are applied: [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.261 s [INFO] Finished at: 2021-12-10T19:54:53+05:30 [INFO] ------------------------------------------------------------------------ C:\MVN>
应用继承、插值和配置文件后,有效的 POM 在控制台中显示为结果。
<?xml version="1.0" encoding="Cp1252"?> <!-- ====================================================================== --> <!-- --> <!-- Generated by Maven Help Plugin on 2021-12-10T19:54:52+05:30 --> <!-- See: http://maven.apache.org/plugins/maven-help-plugin/ --> <!-- --> <!-- ====================================================================== --> <!-- ====================================================================== --> <!-- --> <!-- Effective POM for project --> <!-- 'com.companyname.project-group:project:jar:1.0' --> <!-- --> <!-- ====================================================================== --> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version> <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </pluginRepository> </pluginRepositories> <build> <sourceDirectory>C:\MVN\src\main\java</sourceDirectory> <scriptSourceDirectory>C:\MVN\src\main\scripts</scriptSourceDirectory> <testSourceDirectory>C:\MVN\src\test\java</testSourceDirectory> <outputDirectory>C:\MVN\target\classes</outputDirectory> <testOutputDirectory>C:\MVN\target\test-classes</testOutputDirectory> <resources> <resource> <directory>C:\MVN\src\main\resources</directory> </resource> </resources> <testResources> <testResource> <directory>C:\MVN\src\test\resources</directory> </testResource> </testResources> <directory>C:\MVN\target</directory> <finalName>project-1.0</finalName> <pluginManagement> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>default-clean</id> <phase>clean</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>default-testResources</id> <phase>process-test-resources</phase> <goals> <goal>testResources</goal> </goals> </execution> <execution> <id>default-resources</id> <phase>process-resources</phase> <goals> <goal>resources</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>default-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <executions> <execution> <id>default-compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>default-testCompile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <executions> <execution> <id>default-test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>default-install</id> <phase>install</phase> <goals> <goal>install</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> <executions> <execution> <id>default-deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.3</version> <executions> <execution> <id>default-site</id> <phase>site</phase> <goals> <goal>site</goal> </goals> <configuration> <outputDirectory>C:\MVN\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </execution> <execution> <id>default-deploy</id> <phase>site-deploy</phase> <goals> <goal>deploy</goal> </goals> <configuration> <outputDirectory>C:\MVN\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </execution> </executions> <configuration> <outputDirectory>C:\MVN\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </plugin> </plugins> </build> <reporting> <outputDirectory>C:\MVN\target\site</outputDirectory> </reporting> </project>
在上面的 pom.xml 中,您可以看到默认的项目源文件夹结构、输出目录、所需的插件、存储库、报告目录,Maven 在执行所需目标时将使用这些目录。
Maven pom.xml 也不需要手动编写。Maven 提供了许多原型插件来创建项目,这些插件按顺序创建项目结构和 pom.xml