porm文件中的build标签

porm文件中的build标签分类    (1)全局配置(projectbuild)         针对整个项目的所有情况都有效    (2)配置(profilebuild)         针对不同的profile配置[html] viewplain copyproject xm

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

分类

       (1)全局配置(project build)

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

       (2)配置(profile build)

                 针对不同的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.   …  
  6.   <!– “Project Build” contains more elements than just the BaseBuild set –>  
  7.   <build></build>  
  8.   <profiles>  
  9.     <profile>  
  10.       <!– “Profile Build” contains a subset of “Project Build”s elements –>  
  11.       <build></build>  
  12.     </profile>  
  13.   </profiles>  
  14. </project>  


2.配置说明

       (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.          …  
  9. </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配置

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

[html] 
view plain  
copy

  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>  

              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配置

                  用于指定使用的插件

[html] 
view plain  
copy

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

[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>  

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


                           goals:目标列表

                          phase:目标执行的阶段

                          inherit:子类pom是否继承

                          configuration:在指定目标下的配置

        (4)pluginManagement配置

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

                   父pom:

[html] 
view plain  
copy

  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>  

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

[html] 
view plain  
copy

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面试JAVA常被问到的问题(持续更新中)

    面试JAVA常被问到的问题(持续更新中)引言有的面试会被问到有没有写博客,这时候我尴尬,不知道怎么回答,所以这篇文章仅仅是把我面试JAVA的遇到的问题记录下来而已,也算是我写博客迈出的第一步,起码,以后被问到:有没有写博客?我可以回答,我写过。 (最主要的是以后换工作我不用频繁百度常见面试题了。。。。)ps1,别把我太当回事,我是个LJ;2,说得不对的地方请多多包涵,想看更详细的请百度官方文档和其他大佬的文章;3,如果有被问到…

    2022年7月9日
    19
  • 关于python中的+、+=、*、*=[通俗易懂]

    关于python中的+、+=、*、*=[通俗易懂]关于python中的+、+=、*、*=

    2022年4月22日
    42
  • 软件项目工作流程图[通俗易懂]

    软件项目工作流程图

    2022年1月29日
    51
  • pycharm如何执行高级撤销操作回到历史[通俗易懂]

    pycharm如何执行高级撤销操作回到历史[通俗易懂]今天写代码兴奋过头了,认为别人写得太麻烦,所以在看了这个人是要达成什么样的目标之后,把他的代码直接删了,然后自己重写,到后来发现有这样那样的问题,这个时候想参考原来的代码,可是为时已晚,已经是6,7个小时之前了,姑且不问能否一直使用低级撤销ctrl+z,就算可以,估计也要半个小时才能回到6,7个小时之前吧。这个时候,我悲从中来,悔恨自己在最开始的时候没有弄一个备份。但是,痛定思痛,发现了这一个撤销的高级操作,回退到历史,我以前在使用AndroidStudio的时候也有这个功能,所以试了试pycharm

    2022年8月26日
    3
  • 守护进程管理工具_进程保护工具

    守护进程管理工具_进程保护工具1.文本进程管理工具ntsysv是一个用户管理自动运行的守护进程的文本用户界面工具。2.命令行界面(CLI)工具可以使用chkconfig命令检查,设置系统的各种服务。此命令实际上是通过操作/etc/rc[0-6].d目录下的符号链接文件对系统的各种服务进行管理。chkconfig命令具有如下功能:1.添加指定的新服务2.清除指定的服务3.显示由chkconfig管理的服务4.改变服务的运行级别5…

    2025年6月4日
    0
  • 发html邮件乱码 java,Java发送邮件时标题和发件人乱码

    发html邮件乱码 java,Java发送邮件时标题和发件人乱码#Java发送邮件时标题和发件人乱码最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码通过翻阅资料,原因及解决方法如下:“`//SetSubject:头字段message.setSubject(MimeUtility.encodeText(mail,MimeUtility.mimeCharset(“gb2312”),null));//设置邮件发送日期m…

    2022年5月14日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号