Maven常用插件
maven利用各种插件来管理构建项目,本文记录下工作中常用到的插件及使用方法。每个插件都会提供多个目标(goal),用于标示任务。各插件配置在pom.xml里,如下:
<build>
[...]
<plugins>
<plugin>
...
</plugin>
</plugins>
[...]
</build>
常用插件见:http://maven.apache.org/plugins/index.html,http://www.mojohaus.org/plugins.html。
maven-compiler-plugin
用于编译源代码,默认在compile阶段被调用。两个goal,compiler:compile/compiler:testCompile
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<!--源码的Java版本-->
<source>1.7</source>
<!--运行环境的Java版本-->
<target>1.7</target>
</configuration>
</plugin>
maven-surefire-plugin
test阶段执行单元测试,路径src/test/java
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<!--不执行的单元测试文件-->
<excludes>
<exclude>bvt/*.java</exclude>
</excludes>
<!--并行运行-->
<parallel>methods</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>
appassembler-maven-plugin
生成启动Java应用的脚本,命令 mvn package appassembler:assemble
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<!-- Set the target configuration directory to be used in the bin scripts,默认路径是etc -->
<configurationDirectory>configuration</configurationDirectory>
<!-- 源配置文件目录,默认目录是src/main/config -->
<configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
<!--Copy the contents from configurationSourceDirectory to the target configuration directory-->
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<!-- Include the target configurationDirectory in the beginning of the classpath declaration in the bin scripts -->
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<!--assemble the artifacts in and place the bin scripts-->
<assembleDirectory>release</assembleDirectory>
<!--jar存放目录-->
<repositoryName>lib</repositoryName>
<!--lib下直接存放jar,没有路径文件夹(如com/apache)-->
<repositoryLayout>flat</repositoryLayout>
<programs>
<program>
<!--指定主类,脚本名。会生成shell/bat两种类型,也可用platforms指定运行平台-->
<mainClass>com.mycompany.app.App</mainClass>
<name>startapp</name>
</program>
</programs>
</configuration>
</plugin>
maven-assembly-plugin
对项目的源码、jar包、依赖、文档、目录等文件归档生成分发包,支持jar/war/zip/tar/tar.gz等归档格式。如写mapreduce job时可以使用生成一个jar包,包含所有的依赖,便于上传job。
命令mvn assembly:single,也可以绑定到package阶段,自动执行。下面的配置会生成如下文件:target/sample-1.0-SNAPSHOT-jar-with-dependencies.jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<!--使用插件提供的配置,包含jar和依赖-->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!--也可以自定义打包内容,使用descriptor指定路径-->
<!--descriptor>src/main/assembly/assembly.xml</descriptor-->
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!--目标single绑定到package阶段,package阶段自动被调用-->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Maven常用插件的更多相关文章
- maven常用插件pom配置
一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java. ...
- 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 ...
随机推荐
- angularJS(7)
服务:AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用.AngularJS 内建了30 多个服务. 最常用的服务:$location 服务, $http 服务 ...
- XV Open Cup named after E.V. Pankratiev. GP of Tatarstan
A. Survival Route 留坑. B. Dispersed parentheses $f[i][j][k]$表示长度为$i$,未匹配的左括号数为$j$,最多的未匹配左括号数为$k$的方案数. ...
- iOS 与 惯性滚动
注:以下所有例子均 只 在 iOS 的微信中测试过,但对于饿了么APP的内置浏览器同样适用(两者使用相同内核) 引题 工作中常常有需要显示大量信息的情况,列表超出一屏就涉及到滚动的问题.例如 - va ...
- 从零开始山寨Caffe·柒:KV数据库
你说你会关系数据库?你说你会Hadoop? 忘掉它们吧,我们既不需要网络支持,也不需要复杂关系模式,只要读写够快就行. ——论数据存储的本质 浅析数据库技术 内存数据库——STL的map容器 关 ...
- 子代选择器(>)后代选择器(' ')的区别
子代选择器是指紧接着父级的那个标签,如:container>a指的是紧接着container后面的第一个a(儿子级别的,孙子或者之后的a是不能生效的) 后代选择器是用空格分开的,如:contai ...
- 【BZOJ】3997: [TJOI2015]组合数学
题意 \(N \times M\)的网格,一开始在\((1, 1)\)每次可以向下和向右走,每经过一个有数字的点最多能将数字减1,最终走到\((N, M)\).问至少要走多少次才能将数字全部变为\(0 ...
- Linux系统编程之IO_缓冲和非缓冲
下面是一段类似日志记录的代码,已获取通讯的报文内容和当时的环境参数内容,就是创建一个文件,使用标准IO的fopen.fprintf进行输出记录.但是在调试中,刚开始我就傻眼了,文件创建成功了,但是实时 ...
- bash 源码分析
下载解压 bash-3.2 编译bash export LFS=/my/soft/mylfs tar xvf $LFS/sources/bash-3.2.tar.gz -C $LFS/sources/ ...
- 反编译apk时遇到的问题
第一次尝试反编译的时候遇到如下问题:Input file (ganzhou) was not found or was not readable 百度之后说是apktool版本2.0以上,编译命令变了 ...
- 常用的107条Javascript
1. document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >( ...