当前位置:   article > 正文

maven之pom中的build标签

maven之pom中的build标签

1、build标签分类

1.1、全局配置(project build)

        针对整个项目的所有情况都有效。

  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 http://maven.apache.org/maven-v4_0_0.xsd">
  4. ...
  5. <build></build>
  6. ...
  7. </project>

1.2、环境配置(profile build)

        针对不同的profile配置。

  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. ...
  6. <profiles>
  7. <profile>
  8. <!– "Profile Build" contains a subset of "Project Build"s elements –>
  9. <build></build>
  10. </profile>
  11. </profiles>
  12. ...
  13. </project>

2、build 配置说明

2.1、基本元素

  1. <build>
  2. <!-- 指定默认的 Maven 构建目标。当运行 mvn 命令时,将执行指定的目标(用不到) -->
  3. <defaultGoal>install</defaultGoal>
  4. <!-- 指定 Maven 构建输出的目录路径,下列是默认值-->
  5. <directory>target</directory>
  6. <finalName>${artifactId}-${version}</finalName>
  7. <!-- 指定源代码文件的目录路径 -->
  8. <sourceDirectory>src/main/java</sourceDirectory>
  9. <!-- 指定脚本文件的源代码目录路径(用不到) -->
  10. <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
  11. <!-- 指定test的源代码目录路径 -->
  12. <testSourceDirectory>src/test/java</testSourceDirectory>
  13. <!-- 指定编译后的类文件输出的目录路径 -->
  14. <outputDirectory>target/classes</outputDirectory>
  15. <!-- 指定编译后的test类文件输出的目录路径 -->
  16. <testOutputDirectory>target/test-classes</testOutputDirectory>
  17. <!-- 配置项目的资源目录, 例如配置文件、静态资源等 -->
  18. <resources>
  19. <resource>
  20. <directory>src/main/resources</directory>
  21. <!-- 可以有占位符,并替换占位符,即下面的${application.environment} -->
  22. <filtering>true</filtering>
  23. <includes>
  24. <include>bootstrap.properties</include>
  25. <include>bootstrap-${application.environment}.properties</include>
  26. </includes>
  27. </resource>
  28. <resource>
  29. <directory>src/main/resources</directory>
  30. <!-- 没有占位符 -->
  31. <filtering>false</filtering>
  32. <includes>
  33. <include>banner.txt</include>
  34. <include>logback-spring.xml</include>
  35. </includes>
  36. </resource>
  37. </resources>
  38. <!-- 配置项目的test资源目录, 例如配置文件、静态资源等 -->
  39. <testResources>
  40. <testResource>
  41. <directory>src/test/resources</directory>
  42. </testResource>
  43. </testResources>
  44. <filters>
  45. <filter>filters/filter1.properties</filter>
  46. </filters>
  47. <!-- 插件版本管理 -->
  48. <pluginManagement>
  49. <plugins>
  50. <!-- Springboot项目打包插件,生成JAR包 -->
  51. <plugin>
  52. <groupId>org.springframework.boot</groupId>
  53. <artifactId>spring-boot-maven-plugin</artifactId>
  54. <version>${spring-boot.version}</version>
  55. </plugin>
  56. <!-- Maven编译插件 -->
  57. <plugin>
  58. <groupId>org.apache.maven.plugins</groupId>
  59. <artifactId>maven-compiler-plugin</artifactId>
  60. <version>${maven-compiler-plugin.version}</version>
  61. </plugin>
  62. </plugins>
  63. </pluginManagement>
  64. ...
  65. </build>
  • defaultGoal :执行build任务时,如果没有指定目标,将使用的默认值。如上配置:在命令行中执行mvn,则相当于执行mvn install
  • directory :  构建结果输出目录,默认在${basedir}/target目录。
  • finalName :build目标文件的名称,默认情况为${artifactId}-${version}
  • sourceDirectory :主体源程序存放目录,默认在${basedir}/src/main/java
  • scriptSourceDirectory :脚本源程序存放目录,默认在: ${basedir}/src/main/scripts
  • testSourceDirectory :测试源程序存放目录,默认在${basedir}/src/test/java
  • outputDirectory :主体源程序编译结果输出目录,默认在${basedir}/target/classes
  • testOutputDirectory :测试源程序编译结果输出目录,默认在${basedir}/target/test-classes
  • resources :主体资源文件存放目录,默认在: ${basedir}/src/main/resources
  • testResources :测试资源文件存放目录,默认在: ${basedir}/src/test/resources
  • filters :给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。

2.2、Resources配置

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

用于包含或者排除某些资源文件:

  • resources :一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里。
    • targetPath :指定build后的resource存放的文件夹,默认是:${basedir}。通常被打包在jar中的resources的目标路径是META-INF
    • filtering : 构建过程中是否对资源进行过滤,默认false。
    • directory :定义resource文件所在的文件夹,默认为${basedir}/src/main/resources
    • includes :指定哪些文件将被匹配,以*作为通配符。
    • excludes :指定哪些文件将被忽略。
  • testResources :定义和resource类似,只不过在test时使用。

2.3、plugins配置 

  1. <build>
  2. ...
  3. <plugins>
  4. <!-- 插件的坐标。此处引用的 maven-compiler-plugin 插件不是第三方的,是一个 Maven 自带的插件。 -->
  5. <plugin>
  6. <groupId>org.apache.maven.plugins</groupId>
  7. <artifactId>maven-compiler-plugin</artifactId>
  8. <version>3.1</version>
  9. <extensions>false</extensions>
  10. <inherited>true</inherited>
  11. <!-- configuration 标签:配置 maven-compiler-plugin 插件 -->
  12. <configuration>
  13. <!-- 具体配置信息会因为插件不同、需求不同而有所差异 -->
  14. <classifier>test</classifier>
  15. <source>1.8</source>
  16. <target>1.8</target>
  17. <encoding>UTF-8</encoding>
  18. <dependencies>...</dependencies>
  19. <executions>
  20. <execution>
  21. <id>pre-process-classes</id>
  22. <!-- phase : 关联的生命周期阶段 -->
  23. <phase>compile</phase>
  24. <!-- goals/goal:关联指定生命周期的目标 -->
  25. <goals>
  26. <goal>jar</goal>
  27. </goals>
  28. <configuration>
  29. <classifier>pre-process</classifier>
  30. </configuration>
  31. </execution>
  32. </executions>
  33. </plugin>
  34. </plugins>
  35. </build>

 用于指定使用的插件:

  • GAV(即: groupId、artifactId、version):指定插件的标准坐标。
  • extensions :是否加载该插件的扩展,默认false。
  • inherited :该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
  • configuration :该插件所需要的特殊配置,在父子项目之间可以覆盖或合并。
  • dependencies :该插件所特有的依赖类库。
  • executions :该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
    • id 唯一标识;
    • goals :执行目标的名称;
    • phase :execution标签要执行的Maven构建生命周期阶段.
    • inherited :该execution是否可被子项目继承;
    • configuration :该execution的其他配置参数;
    • profile:指定该execution标签在哪个profile中生效。

2.4.1、maven生命周期

详见:maven用久后必须了解的phase、goal参数及生命周期概念_maven goal参数-CSDN博客

  • 生命周期有三种,分别是clean,default,site
  • 每种生命周期都由多个阶段组成:
    • clean:默认是清除target目录中的所有文件,避免将历史版本打到新的包中造成一些不在预期中的问题。
    • process-resources:将资源文件src/main/resources下的文件复制到target/classes目录中。
    • compile:将src/main/java下的代码编译成 class 文件,也放到target/classes目录中。
    • process-test-resources:将资源文件src/test/resources下的文件复制到target/test-classes目录中。
    • test-compile:将src/test/java下的代码编译成 class 文件,也放到target/test-classes目录中。
    • test:运行单元测试并在target/surefire-reports中生成测试报告。
    • package:将资源文件、class文件、pom文件打包成一个jar包。
    • install:将生成的jar包推送到本地仓库中。
    • deploy:将生成的jar包推送到远程仓库中。
  • 执行构建时,会按照阶段顺序从上到下的执行,但只有绑定了插件目标的阶段才会执行;

2.4、pluginManagement配置 

        通过 pluginManagement 标签管理起来的插件就像 dependencyManagement 一样,子工程使用时可以省略版本号,起到在父工程中统一管理版本的效果。

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

       

pluginManagement标签存放着几个极少用到的插件:

  • maven-antrun-plugin
  • maven-assembly-plugin
  • maven-dependency-plugin
  • maven-release-plugin

 被springboot-dependenciens管理的插件:

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. </plugin>

  上面是父工程的pom配置,在子pom中,我们只需要做配置即可,不需要版本号: 

  1. <build>
  2. ...
  3. <plugins>
  4. <plugin>
  5. <groupId>org.apache.maven.plugins</groupId>
  6. <artifactId>maven-jar-plugin</artifactId>
  7. </plugin>
  8. <plugin>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-maven-plugin</artifactId>
  11. </plugin>
  12. </plugins>
  13. ...
  14. </build>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/418869
推荐阅读
相关标签
  

闽ICP备14008679号