From: https://blog.csdn.net/taiyangdao/article/details/52374125

在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>。

1. 在Maven的pom.xml文件中,存在如下两种<build>:

<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">
      ...
      <!-- "Project Build" contains elements of the BaseBuild set and the Build set-->
      <build>...</build>
     
      <profiles>
        <profile>
          <!-- "Profile Build" contains elements of the BaseBuild set only -->
          <build>...</build>
        </profile>
      </profiles>
    </project>

说明:

一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。

Profile Build包含了基本的build元素,而Project Build还包含两个特殊的元素,即各种<...Directory>和<extensions>。

2. Profile Build和Project Build共用的基本build元素

1) 示例如下:

<build>
      <defaultGoal>install</defaultGoal>
      <directory>${basedir}/target</directory>
      <finalName>${artifactId}-${version}</finalName>
      ...
    </build>

说明:

defaultGoal,执行构建时默认的goal或phase,如jar:jar或者package等
    directory,构建的结果所在的路径,默认为${basedir}/target目录
    finalName,构建的最终结果的名字,该名字可能在其他plugin中被改变

2) <resources>

资源往往不是代码,无需编译,而是一些properties或XML配置文件,构建过程中会往往会将资源文件从源路径复制到指定的目标路径。

<resources>给出各个资源在Maven项目中的具体路径。示例如下:

<build>
        ...
        <filters>
          <filter>filters/filter1.properties</filter>
        </filters>
        <resources>
          <resource>
            <targetPath>META-INF/plexus</targetPath>
            <filtering>false</filtering>
            <directory>${basedir}/src/main/plexus</directory>
            <includes>
              <include>configuration.xml</include>
            </includes>
            <excludes>
              <exclude>**/*.properties</exclude>
            </excludes>
          </resource>
        </resources>
        <testResources>
          ...
        </testResources>
        ...
      </build>

说明:

resources,build过程中涉及的资源文件
        targetPath,资源文件的目标路径
        filtering,构建过程中是否对资源进行过滤,默认false
        directory,资源文件的路径,默认位于${basedir}/src/main/resources/目录下
        includes,一组文件名的匹配模式,被匹配的资源文件将被构建过程处理
        excludes,一组文件名的匹配模式,被匹配的资源文件将被构建过程忽略。同时被includes和excludes匹配的资源文件,将被忽略。
    filters,给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。
    testResources,test过程中涉及的资源文件,默认位于${basedir}/src/test/resources/目录下。这里的资源文件不会被构建到目标构件中

3) <plugins>

<plugins>给出构建过程中所用到的插件。

<build>
        ...
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <extensions>false</extensions>
            <inherited>true</inherited>
            <configuration>
              <classifier>test</classifier>
            </configuration>
            <dependencies>...</dependencies>
            <executions>...</executions>
          </plugin>
        </plugins>
      </build>

说明:

groupId
    artifactId
    version
    extensions,是否加载该插件的扩展,默认false
    inherited,该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
    configuration,该插件所需要的特殊配置,在父子项目之间可以覆盖或合并
    dependencies,该插件所特有的依赖类库
    executions,该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
        id,唯一标识
        goals,要执行的插件的goal(可以有多个),如<goal>run</goal>
        phase,插件的goal要嵌入到Maven的phase中执行,如verify
        inherited,该execution是否可被子项目继承
        configuration,该execution的其他配置参数

4) <pluginManagement>

在<build>中,<pluginManagement>与<plugins>并列,两者之间的关系类似于<dependencyManagement>与<dependencies>之间的关系。<pluginManagement>中也配置<plugin>,其配置参数与<plugins>中的<plugin>完全一致。只是,<pluginManagement>往往出现在父项目中,其中配置的<plugin>往往通用于子项目。子项目中只要在<plugins>中以<plugin>声明该插件,该插件的具体配置参数则继承自父项目中<pluginManagement>对该插件的配置,从而避免在子项目中进行重复配置。

3. Project Build特有的<...Directory>

往往配置在父项目中,供所有父子项目使用。示例如下:

<build>
        <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
        <outputDirectory>${basedir}/target/classes</outputDirectory>
        <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
        ...
      </build>
    </project>

目录可以使用绝对路径,如示例所示。如果使用相对路径,则所有的相对路径都是在${basedir}目录下。

4. Project Build特有的<extensions>

<extensions>是执行构建过程中可能用到的其他工具,在执行构建的过程中被加入到classpath中。

也可以通过<extensions>激活构建插件,从而改变构建的过程。

通常,通过<extensions>给出通用插件的一个具体实现,用于构建过程。

<extensions>的使用示例如下:

<build>
        ...
        <extensions>
          <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ftp</artifactId>
            <version>1.0-alpha-3</version>
          </extension>
        </extensions>
        ...
      </build>
    </project>

Maven的pom.xml文件结构之Build配置build相关推荐

  1. Maven的pom.xml文件详解------Build Settings

    转载自  Maven的pom.xml文件详解------Build Settings 根据POM 4.0.0 XSD,build元素概念性的划分为两个部分:BaseBuild(包含poject bui ...

  2. Java 中JAF、CORBA、JTA、JAXB、JAX-WS使用Maven的pom.xml文件配置

    本文主要介绍Java EE中已经弃用的模块,需要单独引用JAF(java.activation).CORBA(java.corba).JTA(java.transaction).JAXB(java.x ...

  3. Maven的pom.xml文件详解------The Basics

    转载自  Maven的pom.xml文件详解------The Basics Maven坐标 GroupId.artifactId和version构成了Maven的坐标(groupId和version ...

  4. Maven的pom.xml文件详解------Environment Settings

    转载自  Maven的pom.xml文件详解------Environment Settings Issue Management 使用的缺陷跟踪系统(Bugzilla,TestTrack,Clear ...

  5. eclipse手动pom本地包_(转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  6. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

  7. pom文件找不到子项目_java,eclipse_eclipse中maven项目pom.xml文件找不到parent要怎么解决?,java,eclipse,maven - phpStudy...

    eclipse中maven项目pom.xml文件找不到parent要怎么解决? 在maven项目中方pom.xml文件找不到parent,maven clean报错如下: [ERROR] [ERROR ...

  8. Maven之pom.xml与setting.xml配置文件详解

    一.Maven相关问题 安装jar到本地仓库 mvn install:install-file -Dfile=jar路径 -DgroupId=组id -DartifactId=组件id -Dversi ...

  9. 详细解读Maven中pom.xml

    详细解读Maven中pom.xml 一.POM是什么 二.存放位置 三.基本设置 3.1.头信息 3.2.maven的基本信息 3.3.POM之间的关系 3.3.1.依赖关系 3.3.2 继承关系:继 ...

最新文章

  1. 七基于Fourinone实现MQ demo
  2. 高校青椒为避免相亲重复,给没谈成的124个姑娘每人建了个文件夹...
  3. Theano3.4-练习之多层感知机
  4. java: \uxxxx unicode编码
  5. 什么是Java反射机制?
  6. weblogic patch log显示
  7. c++内存管理-VC6
  8. 可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据
  9. command not found Operation not permitted
  10. SQL Performance Analyzer SPA常用脚本汇总
  11. C语言自增自减运算辨析
  12. CSDN账号被盗了吗?
  13. Windows安装Jenkins msi文件时,用户无法授权通过验证解决方法
  14. 5.15 vs2019 静态编译_《淫巧系列一》MATLAB编译exe与生成C++库
  15. html embed高度自适应,腾讯优酷视频分享iframe,embed高度多种比例控制
  16. idea配置文件乱码解决方法
  17. 厦大 1395 组合
  18. PaddlePaddle深度学习7日入门CV篇Summaries
  19. 计算机在机械智能制造中的应用,数控技术在智能制造中的应用及发展
  20. lua系统学习02-变量

热门文章

  1. Oracle EXP/IMP参数详解
  2. gl3520 gl3510_带有gl gl本机的跨平台地理空间可视化
  3. 5187. 收集足够苹果的最小花园周长
  4. leetcode 222. 完全二叉树的节点个数(dfs)
  5. 如何使用ArchUnit测试Java项目的体系结构
  6. javascript关键字_让我们揭开JavaScript的“ new”关键字的神秘面纱
  7. ASP.NET Core跨域设置
  8. Unity的几个特殊文件夹
  9. xp和win7安装telnet服务
  10. 用于主题检测的临时日志(c48534c5-686f-461e-811f-a15a2f265756 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...