Maven--pom.xml文件详解

这篇具有很好参考价值的文章主要介绍了Maven--pom.xml文件详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.pom简介

pom指的是project object model,又叫项目对象模型。Maven的pom文件是一个XML文件,用于描述项目的各种属性、依赖和构建信息,包括项目的名称、版本、许可证、作者、描述、依赖关系、构建过程、插件等。总的来说,POM文件是Maven工程的基本工作单元,它包含了项目的所有必要信息,使得Maven能够自动化地构建和管理项目。

2.常用的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<!--                          模型版本号                                 -->
    <modelVersion>4.0.0</modelVersion>
	
	<!--                          父项目坐标属性                              -->
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.1</version>
        <relativePath>/home/mymodule</relativePath> 
    </parent>

	<!--                           当前项目基本属性                           -->
	<groupId>com.njh</groupId>
    <artifactId>Njh-Cloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Njh-Cloud</name>
    <description>Njh-Cloud</description>
    <packaging>pom</packaging>
	
	<!--                           当前项目下的子模块配置                      -->
	<modules>
        <module>njh-gateway</module>
    </modules>
	
	<!--                           项目常量属性设置                                 -->
	<properties>
        <java.version>1.8</java.version>
    </properties>
	
	<!--                           项目依赖管理                                 -->
	<dependencyManagement>
        <dependencies>
            <!-- SpringCloud 微服务 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- SpringBoot 依赖配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

	<!--                           项目依赖定义                            	    -->
	<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
    </dependencies>

	<!--                           项目构建信息                              	 -->
	<build>
        <!-- 插件管理 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        <!-- 资源管理 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 关闭过滤 -->
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/webapp/</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 引入所有 匹配文件进行过滤 -->
                <includes>
                    <include>application*</include>
                    <include>bootstrap*</include>
                    <include>logback*</include>
                </includes>
                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

	<!--                           项目环境信息                              	  -->
	<profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
            <!-- 默认激活dev环境 -->
            <activation> 
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>prd</id>
            <properties>
                <profiles.active>prd</profiles.active>
            </properties>
        </profile>
    </profiles>
	
	<!--                           项目仓库信息                              	  -->
	<repositories>
        <repository>
            <id>public</id>
            <name>nexus</name>
            <url>https://mirrors.njh.cloud.com/repository/maven/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

	<!--                           项目插件仓库信息                                 -->
	<pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>nexus</name>
            <url>https://mirrors.njh.cloud.com/repository/maven/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
	
</project>
3.父项目坐标属性

在Maven中使用<parent>标签是为了在多模块项目中共同管理依赖,可以让多个模块之间共享依赖关系,从而避免了重复的依赖定义。通过<parent>标签中的<groupId><artifactId><version>元素来指定父项目的坐标,子项目就可以通过该坐标找到父项目并自动继承父项目的pom文件中定义的相关依赖,然后子项目就可以不用重复去声明父项目中已存在的依赖,可以直接使用父项目中的依赖。

<parent>
	<!-- 父项目的群组标识符 -->
    <groupId>org.springframework.boot</groupId>  
    <!-- 父项目的项目名标识符 -->
    <artifactId>spring-boot-starter-parent</artifactId> 
    <!-- 父项目的版本号标识符 -->
    <version>3.2.1</version> 
    <!-- 用于指示Maven在查找父级POM文件时应该搜索的相对路径 -->
    <relativePath>/home/mymodule</relativePath> 
</parent>
4. 当前项目基本属性

用于设置当前项目的一些基本信息,通过<groupId><artifactId><version>元素来指定当前项目的坐标;<name>用来设置项目名称;<description>用来设置项目的描述信息;<url>用来设置项目的主也url地址;<packaging>用来设置项目的构建类型,如:jar、war、pom等。

<groupId>com.njh</groupId>
<artifactId>Njh-Cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Njh-Cloud</name>
<description>Njh-Cloud</description>
<url>https://gitee.com/Njh-Cloud</url>
<packaging>pom</packaging>
5.当前项目下的子模块配置

在Maven中,<modules>标签用于定义项目的模块。一个Maven项目可以包含多个模块,每个模块可以被视为一个独立的子项目。通过使用<modules>标签,可以将一个大项目拆分成多个小模块,每个模块都有自己的构建过程和依赖关系,从而提高项目的可维护性和可重用性。

<modules>
    <module>njh-gateway</module>
</modules>
6.项目常量属性设置

在Maven中,<properties>标签中用于定义项目的常量属性,这些常量属性可以在整个项目中被共享和重用,从而简化了项目的配置和管理。每个属性都包含一个id和一个值,在使用时通过${id}就能获取到设置的属性值。

<properties>
    <java.version>1.8</java.version>
</properties>

<!-- 使用上面的属性 -->
<version>${java.version}</version>
7.项目依赖管理

在Maven中,<dependencyManagement>标签用于管理项目中的依赖关系,确保所有子模块共享相同的依赖版本。通过在<dependencyManagement>标签中添加需要共用的依赖,在该项目下的所有子模块会自动引入相同的依赖,可以避免在每个子模块中重复定义相同的依赖,提高了项目构建的效率和一致性。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>groupId</groupId>
            <artifactId>artifactId</artifactId>
            <version>version</version>
        </dependency>
    </dependencies>
</dependencyManagement>
8.项目依赖定义

在Maven中,<dependencies>标签用于定义项目的依赖关系,可以将项目所需的依赖库添加到项目中,并确保这些依赖被正确地管理和使用。每个依赖都是使用<dependency>标签定义的,<dependency>标签中常用的属性有:

  • <groupId>:依赖库的唯一标识符,通常是组织或项目的唯一标识符。
  • <artifactId>:依赖库的唯一标识符,通常是项目或库的唯一标识符。
  • <version>:依赖库的版本号。
  • <scope>:依赖项的作用范围 ,包括compile、provided、runtime、test、system、optional。
  • <optional>:标注依赖是否传递。默认值为 false,表示可以将该依赖向下传递给其他依赖了该项目的项目。设置成true,则不会向下传递。
  • <exclusions>:排除项目中引入的依赖中所包含的某些间接依赖。
<dependencies>
    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
        <scope>compile</scope>
      	<optional>true</optional>
      	<exclusions>
        	<exclusion> 
          		<groupId>groupid</groupId>
          		<artifactId>artifactid</artifactId>
        	</exclusion>
      	</exclusions>
    </dependency>
</dependencies>

scope 依赖项常用的适用范围如下:

  • compile:缺省值,表示所有阶段(编译、测试、运行)可用,该依赖包需要全程存在会随着项目一起发布。
  • provided:表示只在提供依赖的环境中是可用的,也就是在编译、测试时需要,运行时不需要,该依赖不会被打包到项目中;
  • runtime:表示只在运行时可用,该依赖会打包到项目中;
  • test:表示只在测试期间是可用的,该依赖不会被打包到项目中;
  • system:表示只能在系统类路径中找到,不会在Repository中查找它;
9.项目构建信息

在Maven中,<build>标签用于配置项目的构建过程。它包含了一系列的子标签,用于定义项目的构建策略和任务。常用的字标签有:

  1. <plugins>:用于定义Maven插件的列表。Maven插件可以用来执行各种任务,例如编译代码、运行测试、打包和发布项目等。
  2. <pluginManagement>:用于定义项目的构建插件的列表,以及这些插件的配置。
  3. <resources>:用于定义资源的配置,例如在构建过程中要处理的属性文件或资源文件。
  4. <testResources>:类似于<resources>,但是用于配置测试资源,例如在测试过程中要处理的属性文件或资源文件。
  5. <sourceDirectory>:用于指定项目的源代码目录。
  6. <outputDirectory>:用于指定项目的输出目录,例如生成的JAR文件或WAR文件。
  7. <filters>:用于定义项目的过滤器,例如在构建过程中要应用的属性文件过滤器。
  8. <finalName>:用于指定项目的最终名称,例如生成的JAR文件的名称。
<build>
	<plugins></plugins>
	<resources></resources>
	<testResources></testResources>
	<sourceDirectory></sourceDirectory>
	<outputDirectory></outputDirectory>
	<filters></filters>
	<finalName></finalName>
	<pluginManagement></pluginManagement>
</build>
10.项目环境信息

在Maven中,<profiles>标签用于定义项目的构建环境的配置,它允许你为不同的构建环境或目标提供不同的配置。通过不同的<profile>标签来定义不同的环境配置,在<profile>标签里面包含以下部分:

  • <id>:配置文件的唯一标识符。
  • <activation>:用于激活配置文件的逻辑。例如,使用<activeByDefault>属性来指定默认激活的配置文件。
  • <properties>: 用于存储配置文件中使用的属性。
  • <build>: 用于定义配置文件中的构建任务和插件。
<profiles>
    <profile>
        <!-- 本地开发环境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <!-- 默认激活dev环境 -->
        <activation> 
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <!-- 生产环境 -->
        <id>prd</id>
        <properties>
            <profiles.active>prd</profiles.active>
        </properties>
    </profile>
</profiles>
11.项目仓库信息

在Maven中,<repositories>标签用于配置项目所需的依赖库的位置,使得项目能够方便地获取和管理依赖。通过配置不同的仓库,可以轻松地在不同的环境中使用不同的依赖库,从而增加了项目的灵活性和可移植性。其中<repository>标签包含以下部分:

  • <id>:仓库的唯一标识符。
  • <url>:仓库的URL地址。
  • <releases>:用于配置仓库中发布的版本。如果<releases>标签被包含,那么Maven会在这个仓库中搜索并下载项目所需的依赖库。
  • <snapshots>:用于配置仓库中快照版本的位置。如果<snapshots>标签被包含,那么Maven会在这个仓库中搜索并下载项目所需的快照版本。
<repositories>
    <repository>
        <id>snapshots</id>
        <url>http://repo.maven.apache.org/maven-snapshots/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
    <repository>
        <id>releases</id>
        <url>http://repo.maven.apache.org/maven-releases/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>
12.项目插件仓库信息

在Maven中,<pluginRepositories>标签用于配置项目所需的插件库的位置,与<repositories>标签功能基本相同,主要的区别是为了获取和管理Maven插件和插件依赖的。文章来源地址https://www.toymoban.com/news/detail-803131.html

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>http://repo.maven.apache.org/maven2</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

到了这里,关于Maven--pom.xml文件详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Maven】Maven 中 pom.xml 文件

    Maven 是一个项目管理工具,可以对 Java 项目进行构建和管理依赖。 本文,我们认识下 pom.xml 文件。POM(Project Object Model, 项目对象模型) 是 Maven 工程的基本工作单位,也是 Maven 的核心。其包含项目的基本信息,用于描述项目如何构建、声明项目依赖等。 POM 是 Project Object Mod

    2024年02月15日
    浏览(27)
  • 新版IDEA无法解析Maven项目中的pom.xml文件

    在使用新版IDEA进行Maven项目开发时,有时会遇到无法解析pom.xml文件的问题。这可能导致项目无法构建或无法正常导入相关依赖。本文将介绍一些可能的原因和解决方案,帮助您解决这个问题。 检查Maven配置: 首先,确保您的IDEA正确配置了Maven。在IDEA的设置中,通过以下步骤

    2024年02月03日
    浏览(42)
  • IntelliJ IDEA maven配置,设置pom.xml的配置文件

    IntelliJ IDEA项目,选择  文件  设置,弹窗 构建、执行、部署 构建工具 Maven就可以 maven配置好以后,在pom.xml的配置文件中就可以设置对应的jar包了,这样构建的时候自动需要的jar,在项目中导入即 settings.xml文件apache-maven-3.9.0.rar下载,下载之后解压 到 E:Softapache-maven-3.9.0

    2024年02月11日
    浏览(46)
  • [Maven-POM]你真的懂POM文件吗? | 一文带你深入了解POM.XML

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:JavaEE ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁 请查看我的这篇文章:[Java Web]Maven:一个管理和构建Java项

    2024年02月07日
    浏览(46)
  • maven中JDK版本的修改,setting.xml修改以及pom.xml的文件修改

    修改已经建好的maven的JDK的版本,在父模块中修改JDK的信息 在这里先看一下本地的配置,我这里先设置的17版本 出现这种情况的解决办法 先修改根目录的setting.xml文件,将里边的JDK版本全部换为1.8,然后保存即可。将17全部换为1.8 setting.xml的路径为:D:mavenconf(这是我安装的

    2024年02月16日
    浏览(31)
  • eclipse中在maven工程 的pom.xml文件中增加依赖的方法

    方法1:直接编辑pom.xml文件增加依赖 直接编辑pom.xml文件肯定是可以了,不管是否在eclipse中,挺方便的。 例如,从maven仓库中找到自己需要依赖的插件,里边已经将依赖的配置代码写好了,直接拷贝到maven工程的pom.xml文件对应位置即可,也很方便: 方法2:利用eclipse的图形化

    2024年02月13日
    浏览(35)
  • JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)

    Java的包管理工具有Maven、Gradle等,其中Maven是一款服务于Java平台的自动化构建工具,把整个过程抽象成一个项目对象模型(Project Object Model,POM),它不仅可以用作包管理,还有许多的 插件 ,可以支持整个项目 的开发、打包、测试及部署 等一系列行为。Gradle是一个基于Apa

    2024年02月09日
    浏览(43)
  • idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable

    场景: idea警告某些maven依赖包有漏洞或者依赖传递有易受攻击包,如下: 解决: 1、打开idea设置,找到 File | Settings | Editor | Inspections 2、取消上述两项勾选即可  

    2024年02月05日
    浏览(32)
  • IDEA中maven项目工程中的pom.xml文件变灰且中间有一条横线的处理方法

    错误描述: 不知道是什么原因, pom.xml文件被忽略了,但是之前我也没有过什么误操作。。。  解决方法: 1. File--Settings  2. 搜索 maven,找到 maven 下面的 Ignored Files,将清单中对应项目的pom.xml文件 取消选中 即可; 如果取消选中之后,在 idea 的工作区还是显示 pom.xml 文件中

    2024年02月09日
    浏览(32)
  • Maven 的 pom.xml 样例

     pom.xml 模板样例: 仓库优化:

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包