【Maven】pom常用配置标签详解

<?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> <!-- 指定POM模型的版本 -->  
  
    <!-- 项目的坐标 -->  
    <groupId>com.example</groupId> <!-- 项目的组织或团队的唯一标识符 -->  
    <artifactId>my-app</artifactId> <!-- 项目的唯一标识符,通常用于生成构建后的文件名 -->  
    <version>1.0-SNAPSHOT</version> <!-- 项目的版本号,SNAPSHOT表示这是一个开发版本 -->  
    <packaging>jar</packaging><!--当你创建一个新的 Maven 项目时,你需要在 pom.xml 文件中指定 <packaging> 标签以决定项目的打包类型。对于库项目,你可能会选择 jar 打包类型;对于 Web 项目,你可能会选择 war 打包类型;而对于包含多个子模块的聚合项目,你可能会选择 pom 打包类型。默认类型是jar-->
    <url>http://www.example.com/my-project</url>  <!--<url> 标签的值是一个指向项目官方网站的 URL。--> 
    <!-- 项目的依赖管理 -->  
    <dependencies>  
        <!-- 添加项目依赖 -->  
        <dependency>  
            <groupId>junit</groupId> <!-- 依赖的groupId -->  
            <artifactId>junit</artifactId> <!-- 依赖的artifactId -->  
            <version>4.13.2</version> <!-- 依赖的版本号 -->  
            <scope>test</scope> <!-- 依赖的作用范围,test表示这个依赖只在测试时使用 -->  
            <!--
            	compile(默认值)-该依赖项在项目的所有类路径下都是可用的,也就是说它对于编译、测试、运行项目都是必需的。该依赖项会被包含在最终的构建产物中,例如 JAR 或 WAR 文件。
            	test-该依赖项只在测试类路径下可用,也就是说它只用于编译和运行测试代码。它不会被包含在最终的构建产物中。
				provided-该依赖项在编译和测试类路径下都是可用的,但在运行时将由 JDK 或容器提供,因此不会被包含在最终的构建产物中。例如,如果你正在编写一个运行在 Servlet 容器中的 Web 应用,你可能需要将 Servlet API 的依赖项设置为 provided,因为 Servlet 容器会提供这些类。
				runtime-该依赖项在测试和运行时类路径下都是可用的,但在编译主代码时不可用。它通常用于那些编译时不需要,但在运行时需要的库。
				system-该依赖项与 provided 类似,但你必须显式地指定依赖项的路径。由于它指向系统中的一个文件,因此它不会被包含在 Maven 的仓库中,也不会被其他项目所引用。使用 system 作用域应该谨慎,因为它降低了构建的可移植性。
				import-(仅用于 <dependencyManagement>)该作用域只用于 <dependencyManagement> 元素中,它表示将另一个 POM 文件的 <dependencyManagement> 部分导入到当前 POM 的 <dependencies> 部分中。它不实际引入依赖项,而是提供一种在多个项目中共享依赖项配置的方法。
            -->
        </dependency>  
        <dependency>  
          <groupId>org.springframework.boot</groupId>  
          <artifactId>spring-boot-starter-web</artifactId>  
          <!-- <scope>test</scope> 若dependencyManagement管理了版本,则引入依赖时就不用再加版本了 -->
        </dependency> 
    </dependencies>  
  
    <!-- 项目的构建配置 -->  
    <build>  
    	<!-- <build>标签中常见的子元素有<directory>、<finalName>、<plugins>等。<directory>用于指定构建输出的目录,即编译后的class文件和打包后的jar文件存放的位置,默认为${basedir}/target。<finalName>则用于指定打包后的文件名。-->
        <plugins>  
            <!-- 配置构建插件 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId> <!-- 插件的groupId -->  
                <artifactId>maven-compiler-plugin</artifactId> <!-- 插件的artifactId -->  
                <version>3.8.1</version> <!-- 插件的版本号 -->  
                <configuration>  
                    <source>1.8</source> <!-- 源代码使用的Java版本 -->  
                    <target>1.8</target> <!-- 目标代码编译的Java版本 -->  
                </configuration>  
            </plugin>  
        </plugins>  
    </build>  
  
    <!-- 项目的其他配置,如属性、仓库等 -->  
    <properties>  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 设置项目的源文件编码为UTF-8 -->  
        <maven.compiler.source>1.8</maven.compiler.source> <!-- 设置源代码使用的Java版本为1.8 -->  
        <maven.compiler.target>1.8</maven.compiler.target> <!-- 设置目标代码编译的Java版本为1.8 -->  
        <springboot.web.version>2.5.5</springboot.web.version> <!-- 设置目标代码编译的Java版本为1.8 -->  
    </properties>  
  
    <!-- 项目继承与聚合配置 -->  
    <parent>  
        <!-- 如果当前项目是一个子项目,这里可以指定父项目的坐标 -->  
        <relativePath> <!--子标签,它用于标注父工程的 pom.xml 文件的相对位置。这个相对位置的起点是当前 pom.xml 所属工程的目录,默认值为 ../pom.xml。如果这个工程是父工程的子工程,即子工程文件夹位于父工程文件夹内,那么通常使用默认值即可。<relativePath> 标签的作用体现在以下几个方面:
             1)指定查找父项目 pom.xml 的路径:Maven 在构建项目时,需要加载父项目的 pom.xml 以获取继承的依赖、插件配置等信息。<relativePath> 标签可以提供一个相对路径,使 Maven 能够定位并加载父项目的 pom.xml。
             2)控制查找顺序:如果没有指定 <relativePath> 标签,Maven 会按照默认的顺序来查找父项目的 pom.xml,通常是从本地仓库查找,然后再到远程仓库查找。而如果指定了 <relativePath>,Maven 将首先根据该路径在本地文件系统中查找,找不到的话再去仓库中查找。
             3)处理继承问题:在某些情况下,子项目可能无法正确继承父项目的配置,这可能是由于父项目的 pom.xml 文件位置不正确或无法被正确识别。通过指定 <relativePath>,可以确保 Maven 能够找到正确的父项目 pom.xml,从而解决继承问题。-->
    </parent>  
    <modules>  
        <!-- 如果当前项目是一个聚合项目,这里可以列出所有的子模块 -->  
        <module>module1</module> 
    </modules>  
  
    <!-- 项目的分发管理配置 -->  
    <distributionManagement>  
        <!-- 配置项目的分发策略,如发布到Maven中央仓库等 这些配置完成,你可以通过运行mvn deploy命令来执行发布操作。Maven将使用这些配置来将构建结果推送到指定的仓库中。 -->  
        <repository><!--用于指定发布到正式仓库的URL。当项目完成并准备发布正式版本时,可以使用此元素来指定发布的目标仓库。-->
            <id>OSS_Release</id> <!--库的ID,id与settings.xml中的server的id对应-->
            <name>oss release repository</name> <!--库的名字-->
            <url></url>
        </repository>
        <snapshotRepository><!--用于指定发布到快照仓库的URL。快照版本通常用于开发过程中的临时版本,这些版本可能随时发生变化。通过此元素,可以将这些临时版本发布到快照仓库,供其他开发人员或团队使用。-->
            <id>OSS_Snapshot</id>
            <name>oss snapshot repository</name>
            <url></url>
        </snapshotRepository>
    </distributionManagement>  


  
    <!-- 项目的报告插件配置,平时用的不多 -->  
    <reporting>  
        <plugins>  
            <!-- 配置用于生成项目报告的插件 -->  
        </plugins>  
    </reporting>  
  
    <!-- 项目的其他配置信息 如果不是在部署环境打包用的比较少 -->  
    <profiles>  
        <!-- 配置项目的构建环境,如开发环境、测试环境、生产环境等 -->  
        <!--在命令行中,你可以通过以下方式激活不同的profile:使用 -P 参数激活特定的profile:mvn clean package -Pprod 将激活 prod profile。如果 dev profile 是默认激活的,那么你可以通过 -P!dev 来禁用它。-->
    </profiles>  
  
    <!-- 项目依赖管理,通常用于统一管理多个项目的依赖 在这里定义了 在子模块或项目的其他部分中,<dependencies> 下引用而不需要指定版本-->  
    <dependencyManagement>  
        <dependencies>  
            <!-- 在这里定义依赖的版本,子项目可以继承这些定义 -->  
          <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
            <!-- 版本号也可以引用properties中配置的 -->  
            <version>${springboot.web.version}</version>  
          </dependency> 
        </dependencies>  
    </dependencyManagement>  
  
</project>




  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿备忘录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值