`

Maven之POM之<build>标签

阅读更多
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 build之pom.xml文件中的Build配置

    Maven通过一个叫做pom.xml的项目对象模型文件来配置项目构建的各个方面,其中&lt;build&gt;标签是Maven构建配置的核心部分,它定义了整个构建生命周期中需要执行的指令和任务。 Maven构建包括编译代码、执行测试、打包...

    解决Maven资源过滤的pom配置文件

    Maven通过`&lt;build&gt;`标签下的`&lt;resources&gt;`配置来管理这些资源文件的编译和打包过程。本文将详细解析如何通过POM配置文件控制资源文件的过滤行为。 #### Maven资源过滤简介 资源过滤是一种在构建过程中替换资源文件...

    springboot 基础简易实例, maven项目

    &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;/project&gt; --------------------------- src/main/resources/application.yml --------------------------- spring: # 指定...

    Springboot项目正确打war包maven版pom.rar

    1. **设置打包类型**:在`&lt;project&gt;`标签内,设置`packaging`元素为`war`,这样Maven就知道我们要构建一个war包。 ```xml &lt;project&gt; ... &lt;packaging&gt;war&lt;/packaging&gt; ... &lt;/project&gt; ``` 2. **排除嵌入式...

    maven pdf

    &lt;artifactId&gt;maven-fop-plugin&lt;/artifactId&gt; &lt;version&gt;2.6&lt;/version&gt; &lt;configuration&gt; &lt;!-- 配置文件路径等 --&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; ``` 3. **Maven Reports Plugin**: Maven ...

    maven生成web项目时pom配置

    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt; &lt;version&gt;3.3.1&lt;/version&gt; &lt;/plugin&gt; &lt;!-- 其他插件 --&gt; &lt;/plugins&gt; &lt;/pluginManagement&gt; ... &lt;/build&gt; ``` 5. *...

    maven中pom.xml基本配置

    1. **项目模型版本(Project Model Version)**:这是pom.xml文件的开头,定义了Maven模型的版本,如`&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;`。这个版本号确保Maven知道如何解析和处理pom.xml文件。 2. **项目坐标...

    使用Maven管理进行多模块开发案例

    &lt;/modules&gt; packaging节点只能指定为pom,modules节点说明由几个模块组合,上面是把我们经常使用的架构分层模式分成一个个组件进行开发dao-&gt;service-&gt;web层。此pom文档经常还被用来进行一些依赖管理和插件管理,...

    Maven和Tomcat插件

    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt; &lt;version&gt;3.2.1&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;attach-sources&lt;/id&gt; &lt;goals&gt; &lt;goal&gt;jar-no-fork&lt;/...

    maven多环境部署pom文件实例

    &lt;build&gt; &lt;resources&gt; &lt;resource&gt; &lt;directory&gt;src/main/resources-${env}&lt;/directory&gt; &lt;/resource&gt; &lt;/resources&gt; &lt;/build&gt; ``` 3. **构建生命周期阶段(Build Profiles)**:Maven的Profile功能允许为不同...

    maven生成可执行exe文件

    在`pom.xml`文件中的`&lt;build&gt;`部分,添加以下代码来引入`exec-maven-plugin`: ```xml &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt; &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt; ...

    009 maven插件spring-boot-maven-plugin

    Maven 插件 Spring Boot Maven Plugin ... &lt;outputDirectory&gt;${project.build.directory}&lt;/outputDirectory&gt; &lt;/configuration&gt; &lt;/execution&gt; &lt;/executions&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; ```

    maven report plugin

    配置通常在`&lt;build&gt;`部分的`&lt;plugins&gt;`标签下进行。 通过这样的配置,Maven在执行`mvn site`或`mvn verify`时会运行这些检查并生成报告,帮助开发者持续改进项目。同时,这些报告也可以集成到持续集成/持续部署(CI...

    自定义标签(maven)

    接下来,我们需要修改`pom.xml`文件,添加必要的依赖,比如`jsp-api`和`jstl`,以及`maven-jar-plugin`和`maven-war-plugin`来处理我们的标签库: ```xml &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet....

    maven-eclipse-plugin

    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt; &lt;version&gt;2.10&lt;/version&gt; &lt;configuration&gt; &lt;downloadSources&gt;true&lt;/downloadSources&gt; &lt;downloadJavadocs&gt;true&lt;/...

    pom.zip_java maven_pom mainfest java_pom manifest 标签_pom 文件 mani

    标题中的“pom.zip_java maven_pom mainfest java_pom manifest 标签_pom 文件 mani”暗示了我们讨论的主题是Maven项目中的`pom.xml`文件与Manifest文件的关联。Manifest文件在Java应用程序和库中用于记录元数据,如...

    多项目打包模块pom打包例子

    Maven允许在POM中配置插件,通过`&lt;build&gt;&lt;plugins&gt;`和`&lt;profiles&gt;`标签可以定制化构建过程,比如设置源代码编码、资源过滤等。 总结,Maven的多项目打包模块通过POM文件实现了项目的分层管理,简化了大型项目中的...

    ( maven中整合Spring+hibernate的pom.xml文件的配置.doc )

    Pom.xml中的`&lt;dependencies&gt;`标签用于声明项目所需的依赖库,具体包括: 1. **Hibernate核心依赖**: ```xml &lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt; ...

    maven_jar.zip

    为了将项目打包为JAR,我们需要在`&lt;build&gt;`标签内添加`&lt;plugins&gt;`部分,然后配置`maven-jar-plugin`插件。例如: ```xml &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId...

Global site tag (gtag.js) - Google Analytics