pom.xml中build标签

约定不等于承诺〃 2022-05-24 13:41 277阅读 0赞

1.分类

  1. 1)全局配置(project build
  2. 针对整个项目的所有情况都有效
  3. 2)配置(profile build
  4. 针对不同的profile配置

[html] view plain copy

  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/maven-v4\_0\_0.xsd"**>**
  5. <!– “Project Build” contains more elements than just the BaseBuild set –>
  6. <**build**></**build**>
  7. <**profiles**>
  8. <**profile**>
  9. <!– “Profile Build” contains a subset of “Project Build”s elements –>
  10. <**build**></**build**>
  11. </**profile**>
  12. </**profiles**>
  13. </**project**>

2.配置说明

  1. 1)基本元素

[html] view plain copy

  1. <**build**>
  2. <**defaultGoal**>install</**defaultGoal**>
  3. <**directory**>${basedir}/target</**directory**>
  4. <**finalName**>${artifactId}-${version}</**finalName**>
  5. <**filters**>
  6. <**filter**>filters/filter1.properties</**filter**>
  7. </**filters**>
  8. </**build**>

    1. 1defaultGoal
    2. 执行build任务时,如果没有指定目标,将使用的默认值。
    3. 如上配置:在命令行中执行mvn,则相当于执行mvn install
    4. 2directory
    5. build目标文件的存放目录,默认在$\{basedir\}/target目录
    6. 3finalName
    7. build目标文件的名称,默认情况为$\{artifactId\}-$\{version\}
    8. 4filter
    9. 定义\*.properties文件,包含一个properties列表,该列表会应用到支持filterresources中。
    10. 也就是说,定义在filter的文件中的name=value键值对,会在build时代替$\{name\}值应用到resources中。
    11. maven的默认filter文件夹为$\{basedir\}/src/main/filters
  1. 2Resources配置
  2. 用于包含或者排除某些资源文件

[html] view plain copy

  1. <**build**>
  2. <**resources**>
  3. <**resource**>
  4. <**targetPath**>META-INF/plexus</**targetPath**>
  5. <**filtering**>false</**filtering**>
  6. <**directory**>${basedir}/src/main/plexus</**directory**>
  7. <**includes**>
  8. <**include**>configuration.xml</**include**>
  9. </**includes**>
  10. <**excludes**>
  11. <**exclude**>**/*.properties</**exclude**>
  12. </**excludes**>
  13. </**resource**>
  14. </**resources**>
  15. <**testResources**>
  16. </**testResources**>
  17. </**build**>

    1. 1resources
    2. 一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里
    3. 2targetPath
    4. 指定build后的resource存放的文件夹,默认是basedir
    5. 通常被打包在jar中的resources的目标路径是META-INF
    6. 3filtering
    7. true/false,表示为这个resourcefilter是否激活
    8. 4directory
    9. 定义resource文件所在的文件夹,默认为$\{basedir\}/src/main/resources
    10. 5includes
    11. 指定哪些文件将被匹配,以\*作为通配符
    12. 6excludes
    13. 指定哪些文件将被忽略
    14. 7testResources
    15. 定义和resource类似,只不过在test时使用
  1. 3plugins配置
  2. 用于指定使用的插件

[html] view plain copy

  1. <**build**>
  2. <**plugins**>
  3. <**plugin**>
  4. <**groupId**>org.apache.maven.plugins</**groupId**>
  5. <**artifactId**>maven-jar-plugin</**artifactId**>
  6. <**version**>2.0</**version**>
  7. <**extensions**>false</**extensions**>
  8. <**inherited**>true</**inherited**>
  9. <**configuration**>
  10. <**classifier**>test</**classifier**>
  11. </**configuration**>
  12. <**dependencies**></**dependencies**>
  13. <**executions**></**executions**>
  14. </**plugin**>
  15. </**plugins**>
  16. </**build**>

    1. 1GAV
    2. 指定插件的标准坐标
    3. 2extensions
    4. 是否加载pluginextensions,默认为false
    5. 3inherited
    6. true/false,这个plugin是否应用到该pom的孩子pom,默认为true
    7. 4configuration
    8. 配置该plugin期望得到的properties
    9. 5dependencies
    10. 作为plugin的依赖
    11. 6executions
    12. plugin可以有多个目标,每一个目标都可以有一个分开的配置,可以将一个plugin绑定到不同的阶段
    13. 假如绑定antrunrun目标到verify阶段

[html] view plain copy

  1. <**build**>
  2. <**plugins**>
  3. <**plugin**>
  4. <**artifactId**>maven-antrun-plugin</**artifactId**>
  5. <**version**>1.1</**version**>
  6. <**executions**>
  7. <**execution**>
  8. <**id**>echodir</**id**>
  9. <**goals**>
  10. <**goal**>run</**goal**>
  11. </**goals**>
  12. <**phase**>verify</**phase**>
  13. <**inherited**>false</**inherited**>
  14. <**configuration**>
  15. <**tasks**>
  16. <**echo**>Build Dir: ${project.build.directory}</**echo**>
  17. </**tasks**>
  18. </**configuration**>
  19. </**execution**>
  20. </**executions**>
  21. </**plugin**>
  22. </**plugins**>
  23. </**build**>

    1. id:标识,用于和其他execution区分。当这个阶段执行时,它将以这个形式展示 \[ plugin:goal execution: id\]。在这里为: \[antrun:run execution: echodir\]
    2. goals:目标列表
    3. phase:目标执行的阶段
    4. inherit:子类pom是否继承
    5. configuration:在指定目标下的配置
  1. 4pluginManagement配置
  2. pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。
  3. pom

[html] view plain copy

  1. <**build**>
  2. <**pluginManagement**>
  3. <**plugins**>
  4. <**plugin**>
  5. <**groupId**>org.apache.maven.plugins</**groupId**>
  6. <**artifactId**>maven-jar-plugin</**artifactId**>
  7. <**version**>2.2</**version**>
  8. <**executions**>
  9. <**execution**>
  10. <**id**>pre-process-classes</**id**>
  11. <**phase**>compile</**phase**>
  12. <**goals**>
  13. <**goal**>jar</**goal**>
  14. </**goals**>
  15. <**configuration**>
  16. <**classifier**>pre-process</**classifier**>
  17. </**configuration**>
  18. </**execution**>
  19. </**executions**>
  20. </**plugin**>
  21. </**plugins**>
  22. </**pluginManagement**>
  23. </**build**>

    1. 则在子pom中,我们只需要配置:

[html] view plain copy

  1. <**build**>
  2. <**plugins**>
  3. <**plugin**>
  4. <**groupId**>org.apache.maven.plugins</**groupId**>
  5. <**artifactId**>maven-jar-plugin</**artifactId**>
  6. </**plugin**>
  7. </**plugins**>
  8. </**build**>

    1. 这样就大大简化了孩子pom的配置

发表评论

表情:
评论列表 (有 0 条评论,277人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Build

    public class Build \{ //当一个版本属性不知道时所设定的值。 public static final String UNKNOWN = "unknow