• maven 常用插件总结


    • maven-javadoc-plugin

    (1) 说明:该插件生成项目的javadoc.对于构建jar目标,javadoc会首先生成并打包放入jar文件中。

    (2) 默认用法:

      • pom.xml配置
    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.4</version>
            <configuration>
              ...
            </configuration>
          </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>
      • 执行命令
    mvn javadoc:javadoc
    mvn javadoc:jar
    mvn javadoc:aggregate
    mvn javadoc:aggregate-jar
    mvn javadoc:test-javadoc
    mvn javadoc:test-jar
    mvn javadoc:test-aggregate
    mvn javadoc:test-aggregate-jar

     

    (3) 扩展配置:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
           <execution>
              <id>attach-javadocs</id>
                 <goals>
                    <goal>jar</goal><!--执行goal时,完成doc附加-->
                 </goals>
           </execution>
       </executions>
    </plugin>

     

    • maven-source-plugin

    (1) 说明:在target目录中生成当前项目的源文件的jar包。

    (2) 默认用法:

      • pom.xml配置
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-source-plugin</artifactId>
       <version>3.0.1</version>
       <executions>
          <execution>
             <id>attach-sources</id>
             <goals>
                <goal>jar</goal>
            </goals>
          </execution>
       </executions>
    </plugin>
      • 执行命令:
    • source:aggregate 合并所有模块的源码;
    • source:jar 用于项目主源码的打包归档;
    • source:test-jar 用于项目测试源码的打包归档;
    • source:jar-no-fork 类似于source:jar, 但不会fork进程来构建周期
    • source:test-jar-no-fork 类似于source:test-jar, 但不会fork进程来构建周期。

    (3) 扩展配置:

    • 绑定阶段
    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <phase>verify</phase>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      ...
    </project>
    • 在profile中使用
    <project>
      ...
      <profiles>
        <profile>
          <id>release</id>
          <build>
            <plugins>
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                  <execution>
                    <id>attach-sources</id>
                    <goals>
                      <goal>jar-no-fork</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
            </plugins>
          </build>
        </profile>
      </profiles>
      ...
    </project>

     

    • maven-compiler-plugin

    (1) 说明:指定项目编译使用的jdk。

    (2) 默认用法:

      • pom.xml配置
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <encoding>UTF-8</encoding>
        </configuration>
        <executions>
            <execution>
                <id>default-testCompile</id>
                <phase>test-compile</phase>
                <goals>
                    <goal>testCompile</goal>
                </goals>
                <configuration>
                    <skip>false</skip>
                </configuration>
            </execution>
        </executions>
    </plugin>
      • 执行命令

             compiler:compile 绑定compile阶段,编译main源码

             compiler:testCompile 绑定test-compile阶段,编译test源码

    (3) 扩展配置:没有executions 标签。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source> <!-- 源代码使用的开发版本 -->
            <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
            <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
        
            <!-- 这下面的是可选项 -->
            <meminitial>128m</meminitial>
            <maxmem>512m</maxmem>
            <fork>true</fork> <!-- fork is enable,用于明确表示编译版本配置的可用 --> 
            <compilerVersion>1.3</compilerVersion>
            
            <!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->
            <compilerArgument>-verbose -bootclasspath ${java.home}lib
    t.jar</compilerArgument>
        </configuration>
    </plugin>

     

    • maven-resources-plugin

    (1) 说明:该插件处理项目的资源文件拷贝到输出目录。可以分别处理main resources 和 test resources。

    (2) 默认用法:

      • pom.xml配置:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
              <encoding>UTF-8</encoding>
         </configuration>
     </plugin>
    
    <!--最好先指定过如下属性—>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
    </properties>
      • 执行命令:

    resources:resources 拷贝主源码的资源文件到output目录;这个goals通常自动运行。

    通常使用project.build.resources 元素来指定资源,默认拷贝到project.build.outputDirectory指定的目录。

    resources:testResources 拷贝测试源码的资源文件到output目录;这个goals通常自动运行。

    通常使用project.build.testResources元素来指定测试资源,默认拷贝到project.build.testOutputDirectory目录。

    resources:copy-resources 拷贝资源到一个输出目录。这个goals要求将指定的资源拷贝到指定的outputDirectory中。

    (3) 扩展配置:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <executions>
              <execution>
                <id>copy-resources</id>
                <!-- here the phase you need -->
                <phase>validate</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
                  <resources>          
                    <resource>
                      <directory>src/non-packaged-resources</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>              
                </configuration>            
              </execution>
            </executions>
          </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>

     

    • maven-surefire-plugin

    (1) 说明:在构建期间执行单元测试。产生2种格式的测试案例执行报告:*.txt, *.xml。默认情况下,这些结果文件存放在${basedir}/target/surefire-reports下。

    (2) 默认用法:

      • pom.xml配置
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <systemPropertyVariables>
               <!--指定参数,也可以通过testng的@Parameter注解进行指定--> 
                <propertyName>firefox</propertyName>
              </systemPropertyVariables>
            </configuration>
          </plugin>
        [...]
    </plugins>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <!--指定组-->
              <groups>functest,perftest</groups>
            </configuration>
          </plugin>
        [...]
    </plugins>
      • 执行命令:
    • surefire:test :运行单元测试案例;
    • mvn -Dmaven.surefire.debug test :debug测试案例(5005端口)
    • mvn –Dmaven.surefire.debug="-Xdebug –Xrunjdwp:transport=dt_socket, server=y,suspend=y,address=8000 –Xnoagent –Djava.compiler=NONE" test :自定义8000端口进行debug
    • mvn –DforkCount=0 test :强制maven不会fork进程执行案例。
    • mvnDebug -DforkCount=0 test :debug maven自身。
     

    (3) 扩展配置:

    </plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <!--并行运行参数-->
              <parallel>methods</parallel>
              <threadCount>10</threadCount>
            </configuration>
          </plugin>
        [...]
    </plugins>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <properties>
                <property>
                  <name>parallel</name>
                  <value>methods</value>
                </property>
                <property>
                 <!--使用dataprovider并行运行时配置并发数-->
                  <name>dataproviderthreadcount</name>
                  <value>30</value>
                </property>
              </properties>
            </configuration>
          </plugin>
        [...]
    </plugins>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <suiteXmlFiles>
                <!—suite并行运行-->
                <file>src/test/resources/testng1.xml</file>
                <file>src/test/resources/testng2.xml</file>
              </suiteXmlFiles>
              <properties>
                <property>
                  <name>suitethreadpoolsize</name>
                  <value>2</value>
                </property>
              </properties>
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--自定义listener 和 reports-->
    <dependencies>
    [...]
      <dependency>
        <groupId>your-testng-listener-artifact-groupid</groupId>
        <artifactId>your-testng-listener-artifact-artifactid</artifactId>
        <version>your-testng-listener-artifact-version</version>
        <scope>test</scope>
      </dependency>
    [...]
    </dependencies>
    [...]
    </plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              <properties>
                <property>
                  <name>usedefaultlisteners</name>
                  <value>false</value> <!-- disabling default listeners is optional -->
                </property>
                <property>
                  <name>listener</name>
                  <value>com.mycompany.MyResultListener,com.mycompany.MyAnnotationTransformer,com.mycompany.MyMethodInterceptor</value>
                </property>
                <property>
                  <name>reporter</name>
                  <value>listenReport.Reporter</value>
                </property>
              </properties>
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--用户可以自行实现implements org.testng.ITestListener在your-testng-listener-artifact中,可以使用scope=test或代码在/src/test/java中。在当前surefire-testng provider的类载入器中,可以使用参数dependenciesToScan参数过滤test artifact 来载入它的类。 testng reporter 也必须实现org.testng.IReporter—>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              [...]
              <properties>
                <property>
                  <name>surefire.testng.verbose</name>
                  <value>10</value>
                </property>
              </properties>
              [...]
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--配置日志等级,区间为0-10,10为最详细。-1时testng为debug模式。默认为0—>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              [...]
              <properties>
                <property>
                  <name>objectfactory</name>
                  <value>testng.objectfactory.TestNGCustomObjectFactory</value>
                </property>
              </properties>
              [...]
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--自定义Testng Object Factory:通过实现org.testng.IObjectFactory 和绑定类名到关键字:objectfactory-->
    </plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              [...]
              <properties>
                <property>
                  <name>testrunfactory</name>
                  <value>testng.testrunnerfactory.TestNGCustomTestRunnerFactory</value>
                </property>
              </properties>
              [...]
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--自定义TestNG TestRunner Factory: 实现org.testng.ITestRunnerFactory, 绑定类名到关键字testrunfactory—>
    <plugins>
        [...]
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
              [...]
              <suiteXmlFiles>
                <file>src/test/resources/suite.xml</file>
              </suiteXmlFiles>
              <properties>
                <property>
                  <name>testnames</name>
                  <value>a-t1,a-t3</value>
                </property>
              </properties>
              [...]
            </configuration>
          </plugin>
        [...]
    </plugins>
    <!--只运行指定test name 下的案例,此处只运行test 名称为a-t1和a-t3的案例-->
    <argLine>-Djava.endorsed.dirs=...</argLine>
    <!--指定VM的参数-->
    • maven-dependency-plugin

    (1) 说明:该插件提供了操作artifact的能力。它能够从本地或远程库拷贝、打包artifact到指定位置。

    (2) 默认用法:

      • pom.xml配置
    <project>
      [...]
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <id>copy</id>
                <phase>package</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>3.8.1</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                  <destFileName>optional-new-name.jar</destFileName>
                </artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/wars</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
          </plugin>
        </plugins>
      </build>
      [...]
    </project>
    <!--在执行mvn package后,junit被拷贝到指定位置—>
    <!--artifact处理顺序:当前运行器,本地库,已配置的远程库-->
      • 执行命令
    • dependency:analyze 分析项目中的依赖,确定哪些是已使用已声明、已使用未声明及未使用已声明的依赖。
    • dependency:analyze-dep-mgt 分析项目中的依赖,并列出已解决依赖的和依赖管理中列出的引入依赖的错误匹配。
    • dependency:analyze-only 与analyze相同, 但只约束在一个pom 中. 不再fork进程执行编译和test-compile。
    • dependency:analyze-report 分析项目依赖,生成依赖概述报告,阐明已使用已声明、已使用未声明及未使用已声明的依赖。
    • dependency:analyze-duplicate 分析 <dependencies/> and <dependencyManagement/> 标签,确定声明重复的依赖。
    • dependency:build-classpath 在本地库的classpath中使用java –cp,告诉Maven用来输出的依赖目录。classpath 文件会被附加到main artifact并一起安装。
    • dependency:copy  获取在插件管理器中已定义的artifact列表,拷贝他们到一个指定的位置,必要时重命名或去除版本。这个goal能够解决从远程库获取的artifact在本地库或使用库中不存在的问题。
    • dependency:copy-dependencies 获取项目直接依赖及可选的传递依赖列表,必要时拷贝到指定位置,重命名或去除版本。这个goal可以从命令行运行。 
    • dependency:display-ancestors 显示当前项目的所有POM祖先。当CI中需要了解项目的所有POM时非常有用。这个goals可以从命令行运行。 
    • dependency:get 解决单独的artifact, 甚至是来自远程库的间接引用的依赖。
    • dependency:go-offline 告诉Maven,使用离线模块,解决项目所有依赖的所有(依赖,插件,报告)
    • dependency:list 列出项目的依赖列表
    • dependency:list-repositories 显示所有的项目依赖并列出已使用的。
    • dependency:properties 对文件系统中包含artifact的每一个项目依赖设置一个property。
    • dependency:purge-local-repository 告诉maven 清除非本地库的依赖artifact文件,并重新解决他们。
    • dependency:resolve 告诉maven解决所有的依赖并显示他们的版本。
    • dependency:resolve-plugins 告诉maven解决所有的插件及他们的依赖。
    • dependency:sources 告诉maven解决所有的依赖及他们的源码,显示他们的版本。
    • dependency:tree 显示树状依赖。
    • dependency:unpack 与copy相同,但不打包。
    • dependency:unpack-dependencies 与copy-dependencies,但不打包。

    (3) 扩展配置:

    <project>
      [...]
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <id>copy-installed</id>
                <phase>install</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>${project.groupId}</groupId>
                      <artifactId>${project.artifactId}</artifactId>
                      <version>${project.version}</version>
                      <type>${project.packaging}</type>
                    </artifactItem>
                  </artifactItems>
                  <outputDirectory>some-other-place</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      [...]
    </project>
    <!--必须绑定package之后的阶段,确保jar包被已生成-->

     

    • maven-assembly-plugin

    (1) 说明:该插件允许用户整合项目的输出,包括依赖,模块,网站文档和其他文档到一个单独的文档,即可用定制化打包。

    创建的文档格式包括:zip, tar, tar.gz(tgz), gar.bz2(tbgz2), jar, dir,war 等等。四种预定义的描述器可用:bin, jar-with-dependencies, src, project.

    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>bin</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>README*</include>
            <include>LICENSE*</include>
            <include>NOTICE*</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>*.jar</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}/site</directory>
          <outputDirectory>docs</outputDirectory>
        </fileSet>
      </fileSets>
    </assembly>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <!-- TODO: a jarjar format would be better -->
      <id>jar-with-dependencies</id>
      <formats>
        <format>jar</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
        <dependencySet>
          <outputDirectory>/</outputDirectory>
          <useProjectArtifact>true</useProjectArtifact>
          <unpack>true</unpack>
          <scope>runtime</scope>
        </dependencySet>
      </dependencySets>
    </assembly>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>src</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <includes>
            <include>README*</include>
            <include>LICENSE*</include>
            <include>NOTICE*</include>
            <include>pom.xml</include>
          </includes>
          <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
        <fileSet>
          <directory>${project.basedir}/src</directory>
          <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
      </fileSets>
    </assembly>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>project</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <outputDirectory>/</outputDirectory>
          <useDefaultExcludes>true</useDefaultExcludes>
          <excludes>
            <exclude>**/*.log</exclude>
            <exclude>**/${project.build.directory}/**</exclude>
          </excludes>
        </fileSet>
      </fileSets>
    </assembly>

    (2) 默认用法

      • pom.xml配置
    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-assembly-plugin</artifactId>  
        <version>2.4</version>  
        <executions>  
            <execution>  
                <phase>package</phase>  
                <goals>  
                    <goal>single</goal>  
                </goals>  
            </execution>  
        </executions>  
    </plugin>
    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <!-- NOTE: We don't need a groupId specification because the group is
                 org.apache.maven.plugins ...which is assumed by default.
             -->
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
            [...]
    </project>
    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/src.xml</descriptor>
              </descriptors>
            </configuration>
            [...]
    </project>
     
    • 执行命令:
    assembly:single

    (3) 扩展配置:

    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                <phase>package</phase> <!-- bind to the packaging phase -->
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          [...]
    </project>
    <!--自定义组装描述符-->
    <?xml version='1.0' encoding='UTF-8'?>  
    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0  
                        http://maven.apache.org/xsd/assembly-1.1.0.xsd">  
        <id>demo</id>  
        <formats>  
            <format>jar</format> 
    <!--指定打包类型--> 
        </formats>  
        <includeBaseDirectory>false</includeBaseDirectory>
     <!--指定是否包含打包层目录(比如finalName是output,当值为true,所有文件被放在output目录下,否则直接放在包的根目录下)--> 
        <fileSets>  
    <!--指定要包含的文件集,可以定义多个fileSet-->
            <fileSet> 
    <!--指定要包含的目录--> 
                <directory>${project.build.directory}/classes</directory><!--指定当前要包含的目录的目的地-->  
                <outputDirectory>/</outputDirectory>  
            </fileSet>  
        </fileSets>  
    </assembly>
     
    <!--使用-->
    <configuration>
    <finalName>demo</finalName>
    <descriptors>
    <descriptor>assemblies/demo.xml</descriptor>
    </descriptors>
    <outputDirectory>output</outputDirectory>
    </configuration>

     

    • maven-antrun-plugin

    (1) 说明:该插件提供了在maven中运行ant任务的方式。

    (2) 默认用法:

      • pom.xml配置
    <project>
      [...]
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
              <execution>
                <phase> <!-- a lifecycle phase --> </phase>
                <configuration>
                  <target>
    
                    <!--
                      Place any Ant task here. You can add anything
                      you can add between <target> and </target> in a
                      build.xml.
                    -->
    
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      [...]
    </project>
      • 执行命令:

            无

    (3) 扩展配置:

    ...  
    <build>  
        <plugins>  
            <plugin>  
                <artifactId>maven-antrun-plugin</artifactId>  
                <executions>  
                    <execution>  
                        <id>package</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>run</goal>  
                        </goals>  
                        <configuration>  
                            <tasks>  
                                <echo message="make ..."/>  
                                <exec dir="src/main/c" executable="make" failonerror="true" />  
                            </tasks>  
                        </configuration>  
                    </execution>  
                    <execution>  
                        <id>clean</id>  
                        <phase>clean</phase>  
                        <goals>  
                            <goal>run</goal>  
                        </goals>  
                        <configuration>  
                            <tasks>  
                                <echo message="make clean ..."/>  
                                <exec dir="src/main/c" executable="make" failonerror="true">  
                                    <arg line="clean"/>  
                                </exec>  
                            </tasks>  
                        </configuration>  
                    </execution>  
                </executions>  
            </plugin>  
        </plugins>  
    </build>  
    ...

     

    • maven-replacer-plugin

    (1) 说明:

    (2) 默认用法:

      • pom.xml配置
    <build>  
      <plugins>  
       ...  
       <plugin>  
        <groupId>com.google.code.maven-replacer-plugin</groupId>  
        <artifactId>replacer</artifactId>  
        <version>1.5.3</version>  
           <executions>  
            ...  
           </executions>  
           <configuration>  
            ...  
           </configuration>  
       </plugin>  
      </plugins>  
     </build>
    <configuration> <!--文本替换--> 
        <file>src/test/resources/a.txt</file>  
        <outputFile>src/main/resources/a.txt</outputFile>  
        <regex>false</regex>  
        <token>{book.name}</token>  
        <value>Thinkin in Java</value>  
    </configuration>
    <!--多个替换-->
                    <configuration>
                        <file>src/test/resources/a.txt</file>
                        <outputFile>src/main/resources/a.txt</outputFile>
                        <regex>false</regex>
                        <replacements>
                            <replacement>
                                <token>{author.name}</token>
                                <value>Bruce Eckel </value>
                            </replacement>
                            <replacement>
                                <token>{book.name}</token>
                                <value>Thinkin in Java </value>
                            </replacement>
                        </replacements>
                    </configuration>
    <!--排除文件-->
                    <configuration>
                        <basedir>${basedir}/src/test/resources</basedir>
                        <includes>
                            <include>**/*.txt</include>
                        </includes>
                        <excludes>
                            <exclude>**/a.txt</exclude>
                        </excludes>
                        <outputBasedir>${basedir}/src/main/resources</outputBasedir>
                        <outputDir>.</outputDir>
                        <regex>false</regex>
                        <preserveDir>false</preserveDir>
                        <tokenValueMap>src/test/resources/book.conf</tokenValueMap>
                    </configuration>
      • 执行命令:

           无

    (3) 扩展配置:

    <plugin>
                    <groupId>com.google.code.maven-replacer-plugin</groupId>
                    <artifactId>replacer</artifactId>
                    <version>1.5.2</version>
                    <executions>
                        <execution>
                            <phase>generate-test-resources</phase>
                            <goals>
                                <goal>replace</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <file>src/test/resources/prop.properties</file>
                        <regex>true</regex>
                        <token>BrowserCoreType.*</token>
                        <value>BrowserCoreType=${BrowserCoreType}</value>
                    </configuration>
                </plugin>

     

    参考网址: http://maven.apache.org/plugins

  • 相关阅读:
    在嵌入式设备中实现webrtc的第三种方式①
    海思dv300cv500交叉编译webrtc
    Windows编译运行webrtc全过程
    如何使用C#调用C++类虚函数(即动态内存调用)
    使用Windows的Linux子系统搭建嵌入式开发环境
    Spring进阶教程之在ApplicationContext初始化完成后重定义Bean
    Java与邮件系统交互之使用Socket验证邮箱是否存在
    旧博客内容 & 洛谷日报(转载)
    多项式不全家桶
    NOIP2020游记
  • 原文地址:https://www.cnblogs.com/heaven1025/p/6195825.html
Copyright © 2020-2023  润新知