前言:
1.分类
在Maven的pom.xml文件中,存在如下两种
(1)全局配置(project build)
针对整个项目的所有情况都有效
(2)配置(profile build)
针对不同的profile配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <build>...build> <profiles> <profile> <build>...build> profile> profiles> project>
说明:
一种
另一种
Profile Build包含了基本的build元素,而Project Build还包含两个特殊的元素,即各种<...Directory>和
2. 配置说明
1.基本元素
示例如下
<build> <defaultGoal>installdefaultGoal> <directory>${basedir}/targetdirectory> <finalName>${artifactId}-${version}finalName>
<filters>
<filter>filters/filter1.propertiesfilter>
filters>
...
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配置
用于包含或者排除某些资源文件
<build> ... <resources> <resource> <targetPath>META-INF/plexustargetPath> <filtering>truefiltering> <directory>${basedir}/src/main/plexusdirectory> <includes> <include>configuration.xmlinclude> includes> <excludes> <exclude>**/*.propertiesexclude> excludes> resource> resources> <testResources> ... testResources> ... 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配置
用于指定使用的插件
<build> ... <plugins> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> <version>2.0version> <extensions>falseextensions> <inherited>trueinherited> <configuration> <classifier>testclassifier> configuration> <dependencies>...dependencies> <executions>...executions> plugin> plugins> build>
4 pluginManagement配置
pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。
父pom:
<build> ... <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> <version>2.2version> <executions> <execution> <id>pre-process-classesid> <phase>compilephase> <goals> <goal>jargoal> goals> <configuration> <classifier>pre-processclassifier> configuration> execution> executions> plugin> plugins> pluginManagement> ... build>
则在子pom中,我们只需要配置:
<build> ... <plugins> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> plugin> plugins> ... build>
这样大大简化了孩子pom的配置