Java Maven POM配置参考

打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

介绍

什么是POM?

POM代表“项目对象模型”。它是一个名为pom.XML的文件中保存的Maven项目的XML表示。
快速概览

这是一个直接位于POM项目元素下的元素列表。请注意,modelVersion 包含4.0.0。这是目前唯一支持的POM版本,并且始终是必需的。
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.   <modelVersion>4.0.0</modelVersion>
  4.   
  5.   <groupId>...</groupId>
  6.   <artifactId>...</artifactId>
  7.   <version>...</version>
  8.   <packaging>...</packaging>
  9.   <dependencies>...</dependencies>
  10.   <parent>...</parent>
  11.   <dependencyManagement>...</dependencyManagement>
  12.   <modules>...</modules>
  13.   <properties>...</properties>
  14.   
  15.   <build>...</build>
  16.   <reporting>...</reporting>
  17.   
  18.   <name>...</name>
  19.   <description>...</description>
  20.   <url>...</url>
  21.   <inceptionYear>...</inceptionYear>
  22.   <licenses>...</licenses>
  23.   <organization>...</organization>
  24.   <developers>...</developers>
  25.   <contributors>...</contributors>
  26.   
  27.   <issueManagement>...</issueManagement>
  28.   <ciManagement>...</ciManagement>
  29.   <mailingLists>...</mailingLists>
  30.   <scm>...</scm>
  31.   <prerequisites>...</prerequisites>
  32.   <repositories>...</repositories>
  33.   <pluginRepositories>...</pluginRepositories>
  34.   <distributionManagement>...</distributionManagement>
  35.   <profiles>...</profiles>
  36. </project>
复制代码
一个简单的配置示例
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.study</groupId>
  7.     <artifactId>kafka-meter</artifactId>
  8.     <version>1.0</version>
  9.     <description>Kafka plugin for JMeter</description>
  10.     <properties>
  11.         <maven.compiler.source>8</maven.compiler.source>
  12.         <maven.compiler.target>8</maven.compiler.target>
  13.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15.         <apache.jmeter.core>5.4.1</apache.jmeter.core>
  16.         <org.log4j>2.11.1</org.log4j>
  17.         <sf.kafka.api.core.version>1.18.2</sf.kafka.api.core.version>
  18.     </properties>
  19.     <dependencies>
  20.         <dependency>
  21.             <groupId>org.apache.jmeter</groupId>
  22.             <artifactId>ApacheJMeter_core</artifactId>
  23.             <version>${apache.jmeter.core}</version>
  24.         </dependency>
  25.         <dependency>
  26.             <groupId>org.apache.logging.log4j</groupId>
  27.             <artifactId>log4j-api</artifactId>
  28.             <version>${org.log4j}</version>
  29.         </dependency>
  30.         <dependency>
  31.             <groupId>org.apache.logging.log4j</groupId>
  32.             <artifactId>log4j-core</artifactId>
  33.             <version>${org.log4j}</version>
  34.         </dependency>
  35.         <dependency>
  36.             <groupId>com.sf.kafka</groupId>
  37.             <artifactId>sf-kafka-api-core</artifactId>
  38.             <version>${sf.kafka.api.core.version}</version>
  39.         </dependency>
  40.     </dependencies>
  41.     <build>
  42.         <resources>
  43.             <resource>
  44.                 <directory>src/main/java</directory>
  45.                 <includes>
  46.                     <include>**/*.properties</include>
  47.                 </includes>
  48.             </resource>
  49.         </resources>
  50.     </build>
  51. </project>
复制代码
基础配置(The Basics)

POM包含关于项目的所有必要信息,以及构建过程中要使用的插件的配置。
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.   <modelVersion>4.0.0</modelVersion>
  4.   <groupId>org.codehaus.mojo</groupId>
  5.   <artifactId>my-project</artifactId>
  6.   <version>1.0</version>
  7. </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,将这个项目与世界上其他所有项目区分开来(至少,它应该
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表