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\rt.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
maven 常用插件总结的更多相关文章
- maven常用插件pom配置
一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java. ...
- Maven常用插件
maven利用各种插件来管理构建项目,本文记录下工作中常用到的插件及使用方法.每个插件都会提供多个目标(goal),用于标示任务.各插件配置在pom.xml里,如下: <build> [. ...
- maven常用插件总结
maven本质上是一个插件框架,几乎所有的功能都是通过各种各样的插件来实现的.maven默认会依据项目类型自动把构建时的各阶段(Lifecycle和phase)自动绑定(Lifecycle Mappi ...
- maven常用插件配置详解
常用插件配置详解Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...
- Maven常用插件简单配置
好久不见,甚是想念.一日不见,如隔三秋. 从春节到现在已经很久没有回归博客园了,今天回来温习一下maven常用的一些插件的配置,学东西一个很简单的诀窍就是重复重复再重复,这样一定能把知识掌握的很牢靠. ...
- [maven] 常用插件解析
参考资料:http://my.oschina.net/zh119893/blog/276090 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完 ...
- 【转】maven常用插件介绍
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- Maven学习总结(22)——Maven常用插件介绍
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- maven常用插件: 打包源码 / 跳过测试 / 单独打包依赖项
一.指定编译文件的编码 maven-compile-plugin <plugin> <groupId>org.apache.maven.plugins</groupId& ...
- maven常用插件配置
1.maven-jar-plugin插件 <!-- 排除资源文件中的properties文件,不需要打到jar中,后面通过assembly插件打包到conf目录中 --><plugi ...
随机推荐
- [CA]一个证书两个域名
一般一个证书是绑定一个Common name,出于某种测试的需要,我们可能要求一个Site的证书可以是针对2个域名的. 操作如下: 1.CA上CMD输入下面命令,回车: Certutil –setre ...
- 4种字符串匹配算法:KMP(下)
回顾:4种字符串匹配算法:BS朴素 Rabin-karp(上) 4种字符串匹配算法:有限自动机(中) 1.图解 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R ...
- 青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术
青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术 青云QingCloud业内率先支持云端全面透明代理功能
- win2008 ent r2 开启端口
你好.win2008r2 ent 可以用以下命令行来实现,当然也可以用防火墙来配置 比如打开8080端口方法如下: netsh firewall add portopening TCP 8080 My ...
- Broken line - SGU 124(判断点与多边形的关系)
题目大意:RT 分析:构造一条射线,如果穿越偶数条边,那么就在多边形外面,如果穿越奇数条边,那么就在多边形里面. 代码如下: ===================================== ...
- 410. Split Array Largest Sum
做了Zenefits的OA,比面经里的简单多了..害我担心好久 阴险的Baidu啊,完全没想到用二分,一开始感觉要用DP,类似于极小极大值的做法. 然后看了答案也写了他妈好久. 思路是再不看M的情况下 ...
- ELK初学搭建(kibana)
ELK初学搭建(kibana) elasticsearch logstash kibana ELK初学搭建 kibana 1.环境准备 centos6.8_64 mini IP:192.168.10. ...
- 回收InnoDB表空间
以下论述均假定innodb_file_per_table开启 先用常规optimize回收: mysql> select count(*) from t; +----------+ | coun ...
- [置顶] 【VB.NET2010】在空间上显示提示气泡框的方法
在VB6中,有ToolTip这个属性,可以设置鼠标悬浮在控件上的时候显示的图像. 而,在VB.NET中,实现这个功能需要使用一个类,ToolTip类. 代码如下(为了立即起效,建议将这些代码放在For ...
- Delphi Format中的换行符号是什么
Delphi Format中的换行符号是什么 #,s1]); s3#'%s',[s,s1]); ShowMessage(s2); ShowMessage(s3); end; #13#10两边 ...