Java Maven POM配置参考

2023-08-26 19:41:25 浏览数 (1)

介绍

什么是POM?

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

快速概览

这是一个直接位于POM项目元素下的元素列表。请注意,modelVersion 包含4.0.0。这是目前唯一支持的POM版本,并且始终是必需的。

代码语言:javascript复制
<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>
 
  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>
 
  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>
 
  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>
 
  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>
一个简单的配置示例
代码语言:javascript复制
<?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包含关于项目的所有必要信息,以及构建过程中要使用的插件的配置。

代码语言:javascript复制
<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都是必需字段(不过,如果从父级继承groupIdversion,则不需要显式定义它们-稍后将详细介绍继承)。这三个字段的作用非常像一个地址和时间戳。这标志着仓库中的一个特定位置,就像Maven项目的坐标系一样:

  • 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)。artifactIdgroupId一起创建了一个Key,将这个项目与世界上其他所有项目区分开来(至少,它应该

    0 人点赞