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 的子集。
<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
-
分享到:
相关推荐
Maven通过一个叫做pom.xml的项目对象模型文件来配置项目构建的各个方面,其中<build>标签是Maven构建配置的核心部分,它定义了整个构建生命周期中需要执行的指令和任务。 Maven构建包括编译代码、执行测试、打包...
Maven通过`<build>`标签下的`<resources>`配置来管理这些资源文件的编译和打包过程。本文将详细解析如何通过POM配置文件控制资源文件的过滤行为。 #### Maven资源过滤简介 资源过滤是一种在构建过程中替换资源文件...
<artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> --------------------------- src/main/resources/application.yml --------------------------- spring: # 指定...
1. **设置打包类型**:在`<project>`标签内,设置`packaging`元素为`war`,这样Maven就知道我们要构建一个war包。 ```xml <project> ... <packaging>war</packaging> ... </project> ``` 2. **排除嵌入式...
<artifactId>maven-fop-plugin</artifactId> <version>2.6</version> <configuration> <!-- 配置文件路径等 --> </configuration> </plugin> </plugins> </build> ``` 3. **Maven Reports Plugin**: Maven ...
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> </plugin> <!-- 其他插件 --> </plugins> </pluginManagement> ... </build> ``` 5. *...
1. **项目模型版本(Project Model Version)**:这是pom.xml文件的开头,定义了Maven模型的版本,如`<modelVersion>4.0.0</modelVersion>`。这个版本号确保Maven知道如何解析和处理pom.xml文件。 2. **项目坐标...
</modules> packaging节点只能指定为pom,modules节点说明由几个模块组合,上面是把我们经常使用的架构分层模式分成一个个组件进行开发dao->service->web层。此pom文档经常还被用来进行一些依赖管理和插件管理,...
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</...
<build> <resources> <resource> <directory>src/main/resources-${env}</directory> </resource> </resources> </build> ``` 3. **构建生命周期阶段(Build Profiles)**:Maven的Profile功能允许为不同...
在`pom.xml`文件中的`<build>`部分,添加以下代码来引入`exec-maven-plugin`: ```xml <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> ...
Maven 插件 Spring Boot Maven Plugin ... <outputDirectory>${project.build.directory}</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> ```
配置通常在`<build>`部分的`<plugins>`标签下进行。 通过这样的配置,Maven在执行`mvn site`或`mvn verify`时会运行这些检查并生成报告,帮助开发者持续改进项目。同时,这些报告也可以集成到持续集成/持续部署(CI...
接下来,我们需要修改`pom.xml`文件,添加必要的依赖,比如`jsp-api`和`jstl`,以及`maven-jar-plugin`和`maven-war-plugin`来处理我们的标签库: ```xml <dependencies> <dependency> <groupId>javax.servlet....
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.10</version> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</...
标题中的“pom.zip_java maven_pom mainfest java_pom manifest 标签_pom 文件 mani”暗示了我们讨论的主题是Maven项目中的`pom.xml`文件与Manifest文件的关联。Manifest文件在Java应用程序和库中用于记录元数据,如...
Maven允许在POM中配置插件,通过`<build><plugins>`和`<profiles>`标签可以定制化构建过程,比如设置源代码编码、资源过滤等。 总结,Maven的多项目打包模块通过POM文件实现了项目的分层管理,简化了大型项目中的...
Pom.xml中的`<dependencies>`标签用于声明项目所需的依赖库,具体包括: 1. **Hibernate核心依赖**: ```xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> ...
为了将项目打包为JAR,我们需要在`<build>`标签内添加`<plugins>`部分,然后配置`maven-jar-plugin`插件。例如: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId...