maven pom.xml中的 build说明

在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>。

 

1. 在Maven的pom.xml文件中,存在如下两种<build>:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.   ...  
  5.   <!-- "Project Build" contains elements of the BaseBuild set and the Build set-->  
  6.   <build>...</build>  
  7.    
  8.   <profiles>  
  9.     <profile>  
  10.       <!-- "Profile Build" contains elements of the BaseBuild set only -->  
  11.       <build>...</build>  
  12.     </profile>  
  13.   </profiles>  
  14. </project>  

说明:

 

一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。

Profile Build包含了基本的build元素,而Project Build还包含两个特殊的元素,即各种<...Directory>和<extensions>。

 

2. Profile Build和Project Build共用的基本build元素

1) 示例如下:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.   <defaultGoal>install</defaultGoal>  
  3.   <directory>${basedir}/target</directory>  
  4.   <finalName>${artifactId}-${version}</finalName>  
  5.   ...  
  6. </build>  

说明:

  • defaultGoal,执行构建时默认的goal或phase,如jar:jar或者package等
  • directory,构建的结果所在的路径,默认为${basedir}/target目录
  • finalName,构建的最终结果的名字,该名字可能在其他plugin中被改变

 

2) <resources>

资源往往不是代码,无需编译,而是一些properties或XML配置文件,构建过程中会往往会将资源文件从源路径复制到指定的目标路径。

<resources>给出各个资源在Maven项目中的具体路径。示例如下:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.   ...  
  3.   <filters>  
  4.     <filter>filters/filter1.properties</filter>  
  5.   </filters>  
  6.   <resources>  
  7.     <resource>  
  8.       <targetPath>META-INF/plexus</targetPath>  
  9.       <filtering>false</filtering>  
  10.       <directory>${basedir}/src/main/plexus</directory>  
  11.       <includes>  
  12.         <include>configuration.xml</include>  
  13.       </includes>  
  14.       <excludes>  
  15.         <exclude>**/*.properties</exclude>  
  16.       </excludes>  
  17.     </resource>  
  18.   </resources>  
  19.   <testResources>  
  20.     ...  
  21.   </testResources>  
  22.   ...  
  23. </build>  

说明:

  • resources,build过程中涉及的资源文件
    • targetPath,资源文件的目标路径
    • filtering,构建过程中是否对资源进行过滤,默认false
    • directory,资源文件的路径,默认位于${basedir}/src/main/resources/目录下
    • includes,一组文件名的匹配模式,被匹配的资源文件将被构建过程处理
    • excludes,一组文件名的匹配模式,被匹配的资源文件将被构建过程忽略。同时被includes和excludes匹配的资源文件,将被忽略。
  • filters,给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。
  • testResources,test过程中涉及的资源文件,默认位于${basedir}/src/test/resources/目录下。这里的资源文件不会被构建到目标构件中

 

3) <plugins>

<plugins>给出构建过程中所用到的插件。

 

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.   ...  
  3.   <plugins>  
  4.     <plugin>  
  5.       <groupId>org.apache.maven.plugins</groupId>  
  6.       <artifactId>maven-jar-plugin</artifactId>  
  7.       <version>2.6</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>  

说明:

 

  • groupId
  • artifactId
  • version
  • extensions,是否加载该插件的扩展,默认false
  • inherited,该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
  • configuration,该插件所需要的特殊配置,在父子项目之间可以覆盖或合并
  • dependencies,该插件所特有的依赖类库
  • executions,该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
    • id,唯一标识
    • goals,要执行的插件的goal(可以有多个),如<goal>run</goal>
    • phase,插件的goal要嵌入到Maven的phase中执行,如verify
    • inherited,该execution是否可被子项目继承
    • configuration,该execution的其他配置参数

 

 

4) <pluginManagement>

在<build>中,<pluginManagement>与<plugins>并列,两者之间的关系类似于<dependencyManagement>与<dependencies>之间的关系。<pluginManagement>中也配置<plugin>,其配置参数与<plugins>中的<plugin>完全一致。只是,<pluginManagement>往往出现在父项目中,其中配置的<plugin>往往通用于子项目。子项目中只要在<plugins>中以<plugin>声明该插件,该插件的具体配置参数则继承自父项目中<pluginManagement>对该插件的配置,从而避免在子项目中进行重复配置。

 

3. Project Build特有的<...Directory>

往往配置在父项目中,供所有父子项目使用。示例如下:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1.   <build>  
  2.     <sourceDirectory>${basedir}/src/main/java</sourceDirectory>  
  3.     <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>  
  4.     <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>  
  5.     <outputDirectory>${basedir}/target/classes</outputDirectory>  
  6.     <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>  
  7.     ...  
  8.   </build>  
  9. </project>  

 

目录可以使用绝对路径,如示例所示。如果使用相对路径,则所有的相对路径都是在${basedir}目录下。

 

4. Project Build特有的<extensions>

 

<extensions>是执行构建过程中可能用到的其他工具,在执行构建的过程中被加入到classpath中。

也可以通过<extensions>激活构建插件,从而改变构建的过程。

通常,通过<extensions>给出通用插件的一个具体实现,用于构建过程。

<extensions>的使用示例如下:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.   ...  
  3.   <extensions>  
  4.     <extension>  
  5.       <groupId>org.apache.maven.wagon</groupId>  
  6.       <artifactId>wagon-ftp</artifactId>  
  7.       <version>1.0-alpha-3</version>  
  8.     </extension>  
  9.   </extensions>  
  10.   ...  
  11. </build>  
  12. t;/project>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值