Maven之POM之标签
程序员文章站
2022-05-29 23:04:42
...
pom.xml中build标签
pom.xml 中的 build 标签是用于配置 pom 的,
相当于 pom 的 configuration,主要用于:
1、定义(或声明)项目的目录结构
2、使用maven的插件(maven plugins)。
1、分类
根据 POM 4.00 XSD,build 元素可以划分为两种级别的构建:
1、基本构建:BaseBuild
2、正常构建:Build
正常构建包含基本构建,除此之外,还包含其它构建元素。
正常构建:Build 标签也分为两种:
1、project build
针对整个项目的所有情况都有效。该配置可以被 profile 全部继承。
2、profile build
用于重写覆盖掉 project build 中的配置。
是 project build 的子集。
2、配置说明
(1)基本元素:BaseBuild
1)defaultGoal
执行 mvn 命令时,如果没有指定目标,指定使用的默认目标。
如上配置:在命令行中执行 mvn,则相当于执行: mvn install
2)directory
目标文件的存放目录,默认在 ${basedir}/target 目录
3)finalName
目标文件的名称,默认情况为 ${artifactId}-${version}
4)filter
定义 *.properties 文件,包含一个 properties 列表,
该列表会应用到支持 filter 的 resources 中。
也就是说,定义在 filter 的文件中的 name = value 键值对,
会在build时代替 ${name} 值应用到 resources 中。
maven的默认filter文件夹为 ${basedir}/src/main/filters
(2)Resources配置 - 1
用于包含或者排除某些资源文件。
说明:资源通常不是源代码(也可以是),它们一般不被编译,例如:.xml 文件, .properties文件等。
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时使用
(2)Resources配置 - 2
(3)plugins配置
用于指定使用的插件
1)GAV (groupId, artifactId, version)
指定插件的标准坐标
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阶段
id:标识,用于和其他 execution 区分。
当这个阶段执行时,它将以这个形式展示[plugin:goal execution:id]。
举例:在这里为: [antrun:run execution:echodir]
goals:目标列表
phase:目标执行的阶段
inherit:子类pom是否继承
configuration:在指定目标下的配置
(4)pluginManagement配置
pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。
父pom:
则在子pom中,我们只需要配置:
这样就大大简化了孩子pom的配置
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2382352
引用:
http://blog.csdn.net/cpf2016/article/details/45674377
-
pom.xml 中的 build 标签是用于配置 pom 的,
相当于 pom 的 configuration,主要用于:
1、定义(或声明)项目的目录结构
2、使用maven的插件(maven plugins)。
1、分类
根据 POM 4.00 XSD,build 元素可以划分为两种级别的构建:
1、基本构建:BaseBuild
2、正常构建:Build
正常构建包含基本构建,除此之外,还包含其它构建元素。
正常构建:Build 标签也分为两种:
1、project build
针对整个项目的所有情况都有效。该配置可以被 profile 全部继承。
2、profile build
用于重写覆盖掉 project build 中的配置。
是 project build 的子集。
<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 http://maven.apache.org/maven-v4_0_0.xsd"> <!–- "Project Build" 除了包含 BaseBuild 集合外,还包含其它构建元素 -–> <build>…</build> <!–- "Profile Build" 是 "Project Build"s 的子集 -–> <profiles> <profile> <build>…</build> </profile> </profiles> </project>
2、配置说明
(1)基本元素:BaseBuild
<build> <defaultGoal>install</defaultGoal> <directory>${basedir}/target</directory> <finalName>${artifactId}-${version}</finalName> <filters> <filter>filters/filter1.properties</filter> </filters> ... </build>
1)defaultGoal
执行 mvn 命令时,如果没有指定目标,指定使用的默认目标。
如上配置:在命令行中执行 mvn,则相当于执行: mvn install
2)directory
目标文件的存放目录,默认在 ${basedir}/target 目录
3)finalName
目标文件的名称,默认情况为 ${artifactId}-${version}
4)filter
定义 *.properties 文件,包含一个 properties 列表,
该列表会应用到支持 filter 的 resources 中。
也就是说,定义在 filter 的文件中的 name = value 键值对,
会在build时代替 ${name} 值应用到 resources 中。
maven的默认filter文件夹为 ${basedir}/src/main/filters
(2)Resources配置 - 1
用于包含或者排除某些资源文件。
说明:资源通常不是源代码(也可以是),它们一般不被编译,例如:.xml 文件, .properties文件等。
<build> ... <resources> <resource> <targetPath>META-INF/plexus</targetPath> <filtering>false</filtering> <directory>${basedir}/src/main/plexus</directory> <includes> <include>configuration.xml</include> </includes> <excludes> <exclude>**/*.properties</exclude> </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时使用
(2)Resources配置 - 2
<resources> <!-- | 有几个路径,就对应几个 resource 标签 | 或: | 一个目录,对应一个 resource 标签 --> <resource> <directory> ${basedir}/src/main/content/META-INF </directory> <targetPath>../vault-work/META-INF</targetPath> <filtering>true</filtering> </resource> <resource> <directory> ${basedir}/src/main/content/jcr_root </directory> <excludes> <!-- 用法1:不包括一整个目录--> <exclude>apps/ui/**</exclude> <!-- 用法2:不包括某类文件(所有路径下)--> <exclude>**/*.jpg</exclude> <!-- 用法3:不包括某个文件(所有路径下)--> <exclude>**/.DS_Store</exclude> </excludes> <targetPath>.</targetPath> <filtering>false</filtering> </resource> </resources>
(3)plugins配置
用于指定使用的插件
<build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.0</version> <extensions>false</extensions> <inherited>true</inherited> <configuration> <classifier>test</classifier> </configuration> <dependencies>...</dependencies> <executions>...</executions> </plugin> </plugins> </build>
1)GAV (groupId, artifactId, version)
指定插件的标准坐标
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阶段
<build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>echodir</id> <goals> <goal>run</goal> </goals> <phase>verify</phase> <inherited>false</inherited> <configuration> <tasks> <echo>Build Dir: ${project.build.directory}</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build>
id:标识,用于和其他 execution 区分。
当这个阶段执行时,它将以这个形式展示[plugin:goal execution:id]。
举例:在这里为: [antrun:run execution:echodir]
goals:目标列表
phase:目标执行的阶段
inherit:子类pom是否继承
configuration:在指定目标下的配置
(4)pluginManagement配置
pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。
父pom:
<build> ... <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>pre-process-classes</id> <phase>compile</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>pre-process</classifier> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> ... </build>
则在子pom中,我们只需要配置:
<build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> </plugin> </plugins> ... </build>
这样就大大简化了孩子pom的配置
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2382352
引用:
http://blog.csdn.net/cpf2016/article/details/45674377
-