商道如狼道 发表于 2024-7-23 03:46:00

Maven中的pom.xml文件



一、什么是pom.xml



pom.xml是Maven项目标焦点设置文件,它是 项目对象模型 - Project Object Model(POM)的缩写。它使用 XML 格式界说了项目标基本信息、依赖项、构建插件和任务等。使用pom.xml,我们可以轻松地管理项目标构建和依赖关系,让我们可以或许更专注于业务逻辑的开发。



二、pom.xml文件结构



pom.xml 文件通常的结构如下所示,主要用于界说 Maven 项目标设置信息和构建过程中所需的各种依赖和插件:
<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>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <packaging>...</packaging>

    <!-- 项目依赖 -->
    <dependencies>
      <dependency>
            <groupId>...</groupId>
            <artifactId>...</artifactId>
            <version>...</version>
            <scope>...</scope>
      </dependency>
      <!-- 可以有多个依赖项 -->
    </dependencies>

    <!-- 构建配置 -->
    <build>
      <sourceDirectory>src/main/java</sourceDirectory>
      <testSourceDirectory>src/test/java</testSourceDirectory>
      <plugins>
            <plugin>
                <groupId>...</groupId>
                <artifactId>...</artifactId>
                <version>...</version>
                <!-- 插件配置 -->
            </plugin>
            <!-- 可以有多个插件 -->
      </plugins>
    </build>

    <!-- 仓库配置 -->
    <repositories>
      <repository>
            <id>...</id>
            <url>...</url>
      </repository>
      <!-- 可以有多个仓库 -->
    </repositories>
</project>
详细解释:


[*]<modelVersion>: POM 模型的版本,目前是 4.0.0。
[*]<groupId>: 项目构造或公司的唯一标识符。
[*]<artifactId>: 项目标唯一标识符,通常是项目名称。
[*]<version>: 项目标当前版本号。
[*]<packaging>: 项目标打包方式,例如 jar、war 等。
[*]<dependencies>: 项目依赖的外部库或模块。
[*]<build>: Maven 构建过程的设置信息,包括源码目录、测试目录和插件设置。
[*]<plugins>: 在构建过程中使用的 Maven 插件。
[*]<repositories>: Maven 从中获取依赖项和插件的仓库列表。



1.dependency



与项目标依赖列表相干的标签最外层由 <dependencies>来囊括,内部包罗了各种具体的依赖
   <dependency>,该标签用于指定一个依赖项,它包罗以下几个子标签

<groupId>:指定依赖项的groupId,项目标组名

<artifactId>:指定依赖项的artifactId,项目标唯一标识符

<version>:指定依赖项的版本号。

<scope>:指定依赖项在项目中的使用范围。
    此中的 <scope>一样寻常包罗以下几种范围:常用的有compile、test、provided 和 runtime

compile:依赖库默认的 scope,表现该依赖库在编译、测试、运行时均必要使用。

provided:表现该依赖库只在编译和测试时必要使用,而在运行时已经被体系或者容器提供,所以不必要打包到最终的应用步伐中。

runtime:表现该依赖库只在运行时必要使用,而在编译和测试时则不必要。

test:表现该依赖库只在测试时必要使用,而在编译和运行时则不必要。



2.repository



固然,我们还能在pom文件中支持指定Maven仓库,纵然用 <repositories> 和 <repository>标签,
<repository>用于指定一个Maven仓库,它包罗以下几个子标签:
   <id>:指定Maven仓库的ID。

<name>:指定Maven仓库的名称。

<url>:指定Maven仓库的URL



3.properties



properties 严酷来说,并不一定是项目自己的信息,而是人为设置的属性或者说宏,这个标签用来界说和管理项目中所必要的属性,其作用有以下几个:


[*]同一管理项目中的常用属性,比如版本号、路径、插件版本等,方便同一修改和管理。
[*]可以在设置过程中使用 ${…}占位符引用这些属性,使得设置更加灵活和便捷。
[*]避免硬编码,提高代码的可维护性和可读性
比如说我们可以这么配
<properties>
    <project.name>demo-project</project.name>
    <project.version>1.0.0</project.version>
    <jdk.version>1.8</jdk.version>
</properties>
....省略其余部分
<dependency>
    <groupId>com.example.demo</groupId>
    <artifactId>${project.name}-api</artifactId>
    <version>${project.version}</version>
</dependency>

4.parent


在 Maven 的 pom.xml 文件中,<parent> 元素是用来指定当前项目继续的父项目(Parent Project)的设置信息。这种设置方式被称为 “继续” 或者 “继续机制”,允许子项目继续父项目标设置,从而简化项目标管理和维护。

<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.example.myproject</groupId>
    <artifactId>myproject-core</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <!-- 继承自父项目 -->
    <parent>
      <groupId>com.example</groupId>
      <artifactId>parent-project</artifactId>
      <version>1.0.0</version>
    </parent>

    <!-- 其他配置 -->
    <dependencies>
      <!-- 项目依赖 -->
    </dependencies>

    <build>
      <!-- 构建配置 -->
    </build>

    <repositories>
      <!-- 仓库配置 -->
    </repositories>
</project>
在这个例子中:


[*]<parent> 元素中的 <groupId>、<artifactId> 和 <version> 指定了父项目标坐标信息。
[*]当前项目(myproject-core)继续自 parent-project,因此会继续父项目中界说的基本设置,如版本管理、插件管理等。
[*]在 <dependencies>、<build> 和 <repositories> 等部分,可以界说当前项目自己的特定设置,这些设置会与父项目标设置归并或覆盖,以形成最终的项目设置。
通过使用 <parent> 元素,可以避免在子项目中重复界说相同的设置信息,提高项目标一致性和可维护性。



三、 项目标构建设置


项目标构建设置信息,包括编译器版本、插件列表、源代码目录等


1.build

build用于界说项目标构建设置,包括源代码目录、资源目录、插件等,此中代码部分的设置如下
<project>
.... 省略其他部分
<build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
      <resource>
      <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
          <source>1.8</source>
          <target>1.8</target>
      </configuration>
      </plugin>
    </plugins>
</build>
</project>


2.plugins


plugins的作用是界说 Maven 插件, plugins 主要用于扩展 Maven 的功能,帮助开发人员更方便地构建、打包、发布项目。

maven-compiler-plugin

比方说,最常用的编译功能,我们可以在pom里面这么写

<build>
<plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
      <source>1.8</source>
      <target>1.8</target>
      <encoding>UTF-8</encoding>
      <showWarnings>true</showWarnings>
      <compilerArgs>
          <arg>-Xlint:unchecked</arg>
          <arg>-Xlint:deprecation</arg>
      </compilerArgs>
      </configuration>
    </plugin>
</plugins>
</build>


各子标签的作用如下:
   <source>:指定Java源代码的版本,例如1.8表现Java 8。

<target>:指定编译后的字节码版本,例如1.8表现Java 8。

<encoding>:指定源代码的编码格式。

<showWarnings>:是否表现编译警告信息,true表现表现,false表现不表现。

<compilerArgs>:可选参数,可以添加多个编译器参数,例如-Xlint选项用来启用编译器警告查抄。

如果我们按示例中设置,我们就指定了编译器的源和目标版本为1.8,当我们使用 mvn compile 命令的时候,这个插件将会编译我们的 Java 代码,并将编译后的 class 文件放置在 target 目录下。





四、pom.xml的使用



经过了上面的学习,不难发现,使用pom.xml可以轻松地管理项目标构建和依赖关系,其主要用法实在有三种:


[*]添加依赖:在dependencies标签下添加依赖,包括groupId、artifactId、version、scope等信息。
[*]修改打包方式:在packaging标签下修改项目标打包方式,通常是jar、war或pom。
[*]设置插件:在build标签下设置插件,包括groupId、artifactId、version等信息。插件可以帮助我们处理处罚各种构建任务,比如编译代码、生成文档、打包文件等。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Maven中的pom.xml文件