ToB企服应用市场:ToB评测及商务社交产业平台

标题: Maven中的pom.xml文件 [打印本页]

作者: 商道如狼道    时间: 2024-7-23 03:46
标题: Maven中的pom.xml文件


一、什么是pom.xml



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



二、pom.xml文件结构



pom.xml 文件通常的结构如下所示,主要用于界说 Maven 项目标设置信息和构建过程中所需的各种依赖和插件:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4.                              http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <!-- 项目基本信息 -->
  6.     <modelVersion>4.0.0</modelVersion>
  7.     <groupId>...</groupId>
  8.     <artifactId>...</artifactId>
  9.     <version>...</version>
  10.     <packaging>...</packaging>
  11.     <!-- 项目依赖 -->
  12.     <dependencies>
  13.         <dependency>
  14.             <groupId>...</groupId>
  15.             <artifactId>...</artifactId>
  16.             <version>...</version>
  17.             <scope>...</scope>
  18.         </dependency>
  19.         <!-- 可以有多个依赖项 -->
  20.     </dependencies>
  21.     <!-- 构建配置 -->
  22.     <build>
  23.         <sourceDirectory>src/main/java</sourceDirectory>
  24.         <testSourceDirectory>src/test/java</testSourceDirectory>
  25.         <plugins>
  26.             <plugin>
  27.                 <groupId>...</groupId>
  28.                 <artifactId>...</artifactId>
  29.                 <version>...</version>
  30.                 <!-- 插件配置 -->
  31.             </plugin>
  32.             <!-- 可以有多个插件 -->
  33.         </plugins>
  34.     </build>
  35.     <!-- 仓库配置 -->
  36.     <repositories>
  37.         <repository>
  38.             <id>...</id>
  39.             <url>...</url>
  40.         </repository>
  41.         <!-- 可以有多个仓库 -->
  42.     </repositories>
  43. </project>
复制代码

详细解释




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

比如说我们可以这么配
  1. <properties>
  2.     <project.name>demo-project</project.name>
  3.     <project.version>1.0.0</project.version>
  4.     <jdk.version>1.8</jdk.version>
  5. </properties>
  6. ....省略其余部分
  7. <dependency>
  8.     <groupId>com.example.demo</groupId>
  9.     <artifactId>${project.name}-api</artifactId>
  10.     <version>${project.version}</version>
  11. </dependency>
复制代码


4.parent


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

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4.                              http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <!-- 项目基本信息 -->
  6.     <modelVersion>4.0.0</modelVersion>
  7.     <groupId>com.example.myproject</groupId>
  8.     <artifactId>myproject-core</artifactId>
  9.     <version>1.0.0-SNAPSHOT</version>
  10.     <packaging>jar</packaging>
  11.     <!-- 继承自父项目 -->
  12.     <parent>
  13.         <groupId>com.example</groupId>
  14.         <artifactId>parent-project</artifactId>
  15.         <version>1.0.0</version>
  16.     </parent>
  17.     <!-- 其他配置 -->
  18.     <dependencies>
  19.         <!-- 项目依赖 -->
  20.     </dependencies>
  21.     <build>
  22.         <!-- 构建配置 -->
  23.     </build>
  24.     <repositories>
  25.         <!-- 仓库配置 -->
  26.     </repositories>
  27. </project>
复制代码

在这个例子中:

通过使用 <parent> 元素,可以避免在子项目中重复界说相同的设置信息,提高项目标一致性和可维护性。



三、 项目标构建设置


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


1.build

build用于界说项目标构建设置,包括源代码目录、资源目录、插件等,此中代码部分的设置如下
  1. <project>
  2.   .... 省略其他部分
  3.   <build>
  4.     <sourceDirectory>src/main/java</sourceDirectory>
  5.     <resources>
  6.       <resource>
  7.         <directory>src/main/resources</directory>
  8.       </resource>
  9.     </resources>
  10.     <plugins>
  11.       <plugin>
  12.         <groupId>org.apache.maven.plugins</groupId>
  13.         <artifactId>maven-compiler-plugin</artifactId>
  14.         <version>3.8.1</version>
  15.         <configuration>
  16.           <source>1.8</source>
  17.           <target>1.8</target>
  18.         </configuration>
  19.       </plugin>
  20.     </plugins>
  21.   </build>
  22. </project>
复制代码


2.plugins


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

maven-compiler-plugin

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

  1. <build>
  2.   <plugins>
  3.     <plugin>
  4.       <groupId>org.apache.maven.plugins</groupId>
  5.       <artifactId>maven-compiler-plugin</artifactId>
  6.       <version>3.8.1</version>
  7.       <configuration>
  8.         <source>1.8</source>
  9.         <target>1.8</target>
  10.         <encoding>UTF-8</encoding>
  11.         <showWarnings>true</showWarnings>
  12.         <compilerArgs>
  13.           <arg>-Xlint:unchecked</arg>
  14.           <arg>-Xlint:deprecation</arg>
  15.         </compilerArgs>
  16.       </configuration>
  17.     </plugin>
  18.   </plugins>
  19. </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可以轻松地管理项目标构建和依赖关系,其主要用法实在有三种:


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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4