porm文件中的build标签

2022-07-04 09:33:36 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

分类

(1)全局配置(project build)

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

(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. <!– “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. <build>
  2. <defaultGoal>install</defaultGoal>
  3. <directory>${basedir}/target</directory>
  4. <finalName>
  5. <filters>
  6. <filter>filters/filter1.properties</filter>
  7. </filters>
  8. </build>

1)defaultGoal

执行build任务时,如果没有指定目标,将使用的默认值。

如上配置:在命令行中执行mvn,则相当于执行mvn install

2)directory build目标文件的存放目录,默认在${basedir}/target目录

3)finalName

build目标文件的名称,默认情况为{artifactId}-{version}

4)filter

定义*.properties文件,包含一个properties列表,该列表会应用到支持filter的resources中。

也就是说,定义在filter的文件中的name=value键值对,会在build时代替${name}值应用到resources中。

maven的默认filter文件夹为${basedir}/src/main/filters

(2)Resources配置

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

  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)resources

一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里

2)targetPath

指定build后的resource存放的文件夹,默认是basedir。

通常被打包在jar中的resources的目标路径是META-INF

3)filtering

true/false,表示为这个resource,filter是否激活 4)directory

定义resource文件所在的文件夹,默认为${basedir}/src/main/resources

5)includes

指定哪些文件将被匹配,以*作为通配符

6)excludes

指定哪些文件将被忽略

7)testResources

定义和resource类似,只不过在test时使用

(3)plugins配置

用于指定使用的插件

  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)GAV

指定插件的标准坐标

2)extensions

是否加载plugin的extensions,默认为false

3)inherited

true/false,这个plugin是否应用到该pom的孩子pom,默认为true

4)configuration

配置该plugin期望得到的properties

5)dependencies

作为plugin的依赖

6)executions

plugin可以有多个目标,每一个目标都可以有一个分开的配置,可以将一个plugin绑定到不同的阶段

假如绑定antrun:run目标到verify阶段

  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>

id:标识,用于和其他execution区分。当这个阶段执行时,它将以这个形式展示 [ plugin:goal execution: id]。在这里为: [antrun:run execution: echodir] goals:目标列表

phase:目标执行的阶段

inherit:子类pom是否继承

configuration:在指定目标下的配置

(4)pluginManagement配置

pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。

父pom:

  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>

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

  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>

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148826.html原文链接:https://javaforall.cn

0 人点赞