zoukankan      html  css  js  c++  java
  • pom build标签

    转自:https://www.cnblogs.com/myseries/p/11369421.html

    1.分类

           (1)全局配置(project build)

                     针对整个项目的所有情况都有效

           (2)配置(profile build)

                     针对不同的profile配置

    [html] view plain copy
    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  
    4.                       http://maven.apache.org/maven-v4_0_0.xsd">  
    5.   …  
    6.   <!– "Project Build" contains more elements than just the BaseBuild set –>  
    7.   <build>…</build>  
    8.   <profiles>  
    9.     <profile>  
    10.       <!– "Profile Build" contains a subset of "Project Build"s elements –>  
    11.       <build>…</build>  
    12.     </profile>  
    13.   </profiles>  
    14. </project>  

    2.配置说明

           (1)基本元素

    [html] view plain copy
    1. <build>  
    2.         <defaultGoal>install</defaultGoal>  
    3.         <directory>${basedir}/target</directory>  
    4.         <finalName>${artifactId}-${version}</finalName>  
    5.         <filters>  
    6.                 <filter>filters/filter1.properties</filter>  
    7.         </filters>  
    8.          ...  
    9. </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配置

                     用于包含或者排除某些资源文件

     
    1. <build>  
    2.         ...  
    3.        <resources>  
    4.                   <resource>  
    5.                         <targetPath>META-INF/plexus</targetPath>  
    6.                         <filtering>false</filtering>  
    7.             <directory>${basedir}/src/main/plexus</directory>  
    8.             <includes>  
    9.                 <include>configuration.xml</include>  
    10.             </includes>  
    11.             <excludes>  
    12.                 <exclude>**/*.properties</exclude>  
    13.             </excludes>  
    14.          </resource>  
    15.     </resources>  
    16.     <testResources>  
    17.         ...  
    18.     </testResources>  
    19.     ...  
    20. </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配置

                      用于指定使用的插件

     
    1. <build>  
    2.     ...  
    3.     <plugins>  
    4.         <plugin>  
    5.             <groupId>org.apache.maven.plugins</groupId>  
    6.             <artifactId>maven-jar-plugin</artifactId>  
    7.             <version>2.0</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>  

                    1)GAV

                          指定插件的标准坐标

                    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阶段

     
    1. <build>  
    2.     <plugins>  
    3.         <plugin>  
    4.             <artifactId>maven-antrun-plugin</artifactId>  
    5.             <version>1.1</version>  
    6.             <executions>  
    7.                 <execution>  
    8.                     <id>echodir</id>  
    9.                     <goals>  
    10.                         <goal>run</goal>  
    11.                     </goals>  
    12.                     <phase>verify</phase>  
    13.                     <inherited>false</inherited>  
    14.                     <configuration>  
    15.                         <tasks>  
    16.                             <echo>Build Dir: ${project.build.directory}</echo>  
    17.                         </tasks>  
    18.                     </configuration>  
    19.                 </execution>  
    20.             </executions>  
    21.         </plugin>  
    22.     </plugins>  
    23. </build>  

                               id:标识,用于和其他execution区分。当这个阶段执行时,它将以这个形式展示[plugin:goal execution: id]。在这里为: [antrun:run execution: echodir]
                               goals:目标列表

                              phase:目标执行的阶段

                              inherit:子类pom是否继承

                              configuration:在指定目标下的配置

            (4)pluginManagement配置

                       pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。

                       父pom:

     
    1. <build>  
    2.     ...  
    3.     <pluginManagement>  
    4.         <plugins>  
    5.             <plugin>  
    6.               <groupId>org.apache.maven.plugins</groupId>  
    7.               <artifactId>maven-jar-plugin</artifactId>  
    8.               <version>2.2</version>  
    9.                 <executions>  
    10.                     <execution>  
    11.                         <id>pre-process-classes</id>  
    12.                         <phase>compile</phase>  
    13.                         <goals>  
    14.                             <goal>jar</goal>  
    15.                         </goals>  
    16.                         <configuration>  
    17.                             <classifier>pre-process</classifier>  
    18.                         </configuration>  
    19.                     </execution>  
    20.                 </executions>  
    21.             </plugin>  
    22.         </plugins>  
    23.     </pluginManagement>  
    24.     ...  
    25. </build>  

                     则在子pom中,我们只需要配置:

     
    1. <build>  
    2.     ...  
    3.     <plugins>  
    4.         <plugin>  
    5.             <groupId>org.apache.maven.plugins</groupId>  
    6.             <artifactId>maven-jar-plugin</artifactId>  
    7.         </plugin>  
    8.     </plugins>  
    9.     ...  
    10. </build>  

                   这样就大大简化了孩子pom的配置

  • 相关阅读:
    MySQL练习题
    InnoDB存储引擎+显示数据库引擎
    EMP+DEPT+SALGRADE 表的基本操作2
    EMP+DEPT+SALGRADE 表的基本操作1
    Git的使用
    JavaScript动画实例:旋转的正三角形
    JavaScript动画实例:曲线的绘制
    JavaScript动画实例:螺旋线
    JavaScript图形实例:阿基米德螺线
    JavaScript图形实例:平面镶嵌图案
  • 原文地址:https://www.cnblogs.com/JimShi/p/13541288.html
Copyright © 2011-2022 走看看