介绍
什么是POM?
POM代表“项目对象模型”。它是一个名为pom.XML的文件中保存的Maven项目的XML表示。
快速概览
这是一个直接位于POM项目元素下的元素列表。请注意,modelVersion 包含4.0.0。这是目前唯一支持的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
-
- <groupId>...</groupId>
- <artifactId>...</artifactId>
- <version>...</version>
- <packaging>...</packaging>
- <dependencies>...</dependencies>
- <parent>...</parent>
- <dependencyManagement>...</dependencyManagement>
- <modules>...</modules>
- <properties>...</properties>
-
-
- <build>...</build>
- <reporting>...</reporting>
-
-
- <name>...</name>
- <description>...</description>
- <url>...</url>
- <inceptionYear>...</inceptionYear>
- <licenses>...</licenses>
- <organization>...</organization>
- <developers>...</developers>
- <contributors>...</contributors>
-
-
- <issueManagement>...</issueManagement>
- <ciManagement>...</ciManagement>
- <mailingLists>...</mailingLists>
- <scm>...</scm>
- <prerequisites>...</prerequisites>
- <repositories>...</repositories>
- <pluginRepositories>...</pluginRepositories>
- <distributionManagement>...</distributionManagement>
- <profiles>...</profiles>
- </project>
复制代码 一个简单的配置示例
- <?xml version="1.0" encoding="UTF-8"?>
- <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.study</groupId>
- <artifactId>kafka-meter</artifactId>
- <version>1.0</version>
- <description>Kafka plugin for JMeter</description>
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <apache.jmeter.core>5.4.1</apache.jmeter.core>
- <org.log4j>2.11.1</org.log4j>
- <sf.kafka.api.core.version>1.18.2</sf.kafka.api.core.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.jmeter</groupId>
- <artifactId>ApacheJMeter_core</artifactId>
- <version>${apache.jmeter.core}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>${org.log4j}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>${org.log4j}</version>
- </dependency>
- <dependency>
- <groupId>com.sf.kafka</groupId>
- <artifactId>sf-kafka-api-core</artifactId>
- <version>${sf.kafka.api.core.version}</version>
- </dependency>
- </dependencies>
- <build>
- <resources>
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.properties</include>
- </includes>
- </resource>
- </resources>
- </build>
- </project>
复制代码 基础配置(The Basics)
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>my-project</artifactId>
- <version>1.0</version>
- </project>
复制代码 Maven坐标(Coordinates)
上面定义的POM是Maven允许的最小配置。groupId:artifactId:version都是必需字段(不过,如果从父级继承groupId和version,则不需要显式定义它们-稍后将详细介绍继承)。这三个字段的作用非常像一个地址和时间戳。这标志着仓库中的一个特定位置,就像Maven项目的坐标系一样:
<ul>groupId: 这在一个组织或项目中通常是独一无二的。例如,所有的核心Maven工件都应该位于groupId org.apache.Maven下。groupId不一定使用点符号,例如junit项目。请注意,点标记的groupId不必与项目包含的包结构相对应。然而,这是一个很好的做法。当存储在仓库中时,该组的行为与操作系统中的Java包结构非常相似。点被操作系统特定的目录分隔符(如Unix中的“/”)所取代,后者成为Base仓库的相对目录结构。在给定的示例中, org.codehaus.mojo 组位于目录$M2_REPO/org/codehaus/mojo中。
artifactId: artifactId通常是项目的名称。尽管groupId很重要,但组内的人很少在讨论中提到groupId(他们通常都是同一个ID,例如MojoHaus项目groupId:org.codehaus.mojo)。artifactId和groupId一起创建了一个Key,将这个项目与世界上其他所有项目区分开来(至少,它应该
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |