前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >porm文件中的build标签

porm文件中的build标签

作者头像
全栈程序员站长
发布2022-07-04 09:33:36
1.3K0
发布2022-07-04 09:33:36
举报
文章被收录于专栏:全栈程序员必看

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

分类

(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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档