`

大家都用什么Maven插件?及本人的几个常用插件分享

阅读更多
两个月前我只是一直知道有Maven,但从来没用过也没这个计划,直到我们的jar又多又乱,到了不理不行的地步的时候,我想到了Maven。

为了正统,我直接到Apache/Sonatype上去找资料,发现Sonatype(http://www.sonatype.com/)所提供的文档最为劲爆,很快就可以掌握Maven的使用,其中的Sonatype-maven-by-example.pdf最为直接,从单个简单项目到多项目管理,再到多项目管理的优化,无所不谈,我相信大家通过这个文档的系统学习,肯定能跟我那样,入门绝对不是问题。


我所用到的插件,拿出来晒一下,好做交流,其实用的还是很基本的能力:

1、maven-surefire-plugin:单元测试用。用法举例:
<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<parallel>methods</parallel>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>


2、maven-compiler-plugin:编译插件,方便指定目标JDK版本,以及其他一些编译细节。用法举例:
<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>2.3.2</version>
					<configuration>
						<source>1.6</source>
						<target>1.6</target>
					</configuration>
				</plugin>



3、maven-antrun-plugin:跑ant脚本的插件,如果原来的ant脚本还有用武之地或者有些工作还是喜欢ant来帮忙的话。用法举例:
<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.6</version>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<configuration>
							<target name="copy-beans" description="--> copy necessary beans from application">
								<echo message="copy beans from application artifact"/>
								<copy todir="${beans.copy.to.dir}">
									<fileset dir="${beans.copy.from.dir}">
											<include name="**/Resource.java" />
											<exclude name="**/*.xml" />
									</fileset>
								</copy>
								
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

因为我们设计一个applet的子项目,需要拷贝一些资源过来,而不是造成交叉依赖——大家说不定有更好的办法。

4、maven-war-plugin:webapp的必备插件,用来打包war。用法举例:
<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<!-- exclude those which shared lib 
					<packagingExcludes>
						WEB-INF/lib/nric-framework*.jar,
						WEB-INF/lib/spring-core*.jar,
						WEB-INF/lib/spring-asm*.jar,
						WEB-INF/lib/commons-*.jar,
						WEB-INF/lib/spring-aop*.jar,
						WEB-INF/lib/aopalliance*.jar,
						WEB-INF/lib/spring-beans*.jar,
						WEB-INF/lib/spring-context*.jar,
						WEB-INF/lib/spring-orm*.jar,
						WEB-INF/lib/spring-tx*.jar,
						WEB-INF/lib/ibatis*.jar,
						WEB-INF/lib/oracle*.jar,
						WEB-INF/lib/jcl-over-slf4j*.jar,
						WEB-INF/lib/slf4j-*.jar,
						WEB-INF/lib/javassist*.jar,
						WEB-INF/lib/aspectjrt*.jar,
						WEB-INF/lib/aspectjweaver*.jar,
						WEB-INF/lib/spring-jdbc*.jar,
						WEB-INF/lib/log4j*.jar,
						WEB-INF/lib/quartz*.jar,
						WEB-INF/lib/cglib*.jar,
						WEB-INF/lib/asm-*.jar,
						WEB-INF/lib/joda-time*.jar
					</packagingExcludes>-->
					<!-- Use this to include a selection of jars that will be included in the WAR -->
					<!-- 
					<packagingIncludes>
						**/*.xml,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,**/*.jsp,
						WEB-INF/lib/spring-web*.jar
					</packagingIncludes>
					-->
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
					</archive>
				</configuration>
			</plugin>

注意:我注释掉的部分一般用来做war减肥用,如果需要打包为ear的话

5、org.mortbay.jetty:jetty调试插件,用来启动web做集成测试、调试用。用法举例:
<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>7.0.1.v20091125</version>
				<configuration>
					<scanIntervalSeconds>10</scanIntervalSeconds>
					<webAppConfig>
						<contextPath>/nric-demo</contextPath>
					</webAppConfig>
				</configuration>
			</plugin>


我觉得用插件的精髓是不在于多在于合适。希望大家也来分享下。
另外,关于私服问题,我的看法是有条件上没条件就免了,可选。

补充几点心得:
1、建议在parent的pom中使用好pluginManagement和dependencyManagement,而子项目引用即可;
2、使用参数,方便管理版本和重要参数;
3、明显不用的dependency要exclude掉(使用exclusion),避免过多垃圾;
4、合理设置子项目

附上Sonatype-maven-by-example.pdf。
——说明:版权完全为Sonatype所有,并敬请大家通过正式渠道下载最新版。
分享到:
评论
30 楼 itstarting 2011-02-01  
unsid 写道
itstarting 写道
unsid 写道
再推荐俩
cobertura,生成测试覆盖率报告的
cargo,自动部署到远程服务器的



第一个有点意思,学习下
第二个感觉意义不大,真部署的话,还是手动部署的放心,而平时顶多就是集成调试下


比如你定时每天凌晨3点由hudson执行任务,从svn检出代码,编译,测试,生成报告,把报告发到程序员邮箱里,然后程序打包,将包部署到测试服务器,重启服务器这一串过程

第二天程序员一早上习惯性先首邮件,发现测试有错误修改代码,然后再点点测试服务器上的最新版本系统,没问题就开始今日的代码编写,如果没有cargo,靠maven deploy插件命令只能把包部署到私服上,不能到指定服务器的指定目录,整个链条到最后一步就断了。



好家伙,当backend的自动化服务啊,这种非得要大型项目不可。
我们买了Jtest,干的类似的活,但由于目前主要跑code review——》生成报告——》邮件分发,所以还不需要自动化部署,不过你的idea不错,可以参考,这样就可以跑runtime的自动化测试了
29 楼 unsid 2011-01-31  
itstarting 写道
unsid 写道
再推荐俩
cobertura,生成测试覆盖率报告的
cargo,自动部署到远程服务器的



第一个有点意思,学习下
第二个感觉意义不大,真部署的话,还是手动部署的放心,而平时顶多就是集成调试下


比如你定时每天凌晨3点由hudson执行任务,从svn检出代码,编译,测试,生成报告,把报告发到程序员邮箱里,然后程序打包,将包部署到测试服务器,重启服务器这一串过程

第二天程序员一早上习惯性先首邮件,发现测试有错误修改代码,然后再点点测试服务器上的最新版本系统,没问题就开始今日的代码编写,如果没有cargo,靠maven deploy插件命令只能把包部署到私服上,不能到指定服务器的指定目录,整个链条到最后一步就断了。
28 楼 itstarting 2011-01-30  
我其实不是很理解大家为什么觉得用上了Maven就成了牛人

其实Maven就是一个插件平台+一个生命周期理论

我认为只要关注Maven的每一个人,都能根据Sonatype提供的文档达到足够入门的程度——不要过分追求技术化,比如动不动就自行开发插件啥的

我这个帖子的初衷还是讨论插件——Maven的两大核心之一。
当然了,如果大家有闲情,也可以讨论下这个生命周期理论下的相关心得
27 楼 keer2345 2011-01-30  
huhuanqadn 写道
直接用myeclipse的,带了m2的支持。用着挺爽的。
当然myeclipse是中国特色版

直接开搞IntelliJ IDEA
26 楼 keer2345 2011-01-30  
引用
发现Sonatype(http://www.sonatype.com/)所提供的文档最为劲爆,很快就可以掌握Maven的使用


楼主是个牛人,我怎么看都看不出maven的文档有那么好,也没那么快的速度来掌握maven,哎,差距真大
25 楼 cue2008 2011-01-28  
基本上maven自带的插件就够用了,现在IDE开发速度比插件开发速度要快。
24 楼 wjcbigwjc 2011-01-28  
都有用最好的还是
23 楼 adaikiss 2011-01-28  
folie2006 写道
指定编译那个可以加上个编码,要不maven默认是GBK。。。UTF-8的项目就打不成了。。

默认应该是OS编码吧
22 楼 folie2006 2011-01-28  
指定编译那个可以加上个编码,要不maven默认是GBK。。。UTF-8的项目就打不成了。。
21 楼 linvar 2011-01-28  
itstarting 写道
linvar 写道
断断续续在接触maven,一直没入门...
希望下一个项目能用上,
再接触接触...
我要入门,我要入门...



照着Sonatype-maven-by-example.pdf全部做一遍,再思考总结一下,肯定能入门

谢谢分享这个pdf
其实我一直有在看maven的官网上的document
就是感觉太复杂,概念太多,还在接触中,sonatype这个网站第一次看到,希望有用
20 楼 ka520888 2011-01-28  
晕啊.全是牛人..偶不会啊...哭
19 楼 LoriSun 2011-01-28  
Build Flex.
<plugin>
<groupId>net.israfil.mojo</groupId>
<artifactId>maven-flex2-plugin</artifactId>
<version>${flex.plugin.version}</version>
<executions>
 <execution>
  <id>copy-flex-resources</id>
  <phase>process-classes</phase>
  <goals><goal>copy-flex-applications</goal></goals>
  <configuration>
   <modules>
    <swfModule>
     <groupId>project.groupId</groupId>
     <artifactId>account-selector</artifactId>
     <targetPath>${project.build.directory}/flex-resources/swf</targetPath>
     <targetFilename>Accountselector.swf</targetFilename>
    </swfModule>
   </modules>
  </configuration>
 </execution>
</executions>
</plugin>			
18 楼 itstarting 2011-01-28  
linvar 写道
断断续续在接触maven,一直没入门...
希望下一个项目能用上,
再接触接触...
我要入门,我要入门...



照着Sonatype-maven-by-example.pdf全部做一遍,再思考总结一下,肯定能入门
17 楼 itstarting 2011-01-28  
skydream 写道
ant + ivy
或者新潮的gradle

都是不错的选择。



试过ant+ivy,感觉太繁琐——与其说是自由,不如说自找罪受——毕竟绝大部分我们要的东西,Maven都能用各种插件组合搞定,实在不行了,再用ant插件。

gradle这个我还专门看了他们CEO的视频讲解,感觉也是在追求纯粹技术人员的所谓自由,不好


我的观念永远都是:简单就是美
16 楼 linvar 2011-01-28  
断断续续在接触maven,一直没入门...
希望下一个项目能用上,
再接触接触...
我要入门,我要入门...
15 楼 hyanqing1 2011-01-27  
用开发工具调试的时候,Maven项目直接就跟普通Web项目部署就可以了,我用的是Eclipse-Jee版本的,MyEclipse内部直接集成Maven插件,也是一样的。
14 楼 skydream 2011-01-27  
ant + ivy
或者新潮的gradle

都是不错的选择。
13 楼 steafler 2011-01-27  
m2eclipse
12 楼 manysysy 2011-01-27  
Sonatype-maven-by-example.pdf的确不错,谢谢共享
11 楼 sdh5724 2011-01-27  
其实, 规模不大的项目, 可以使用ant的,maven复杂程度, 如果要做安全隔离, 要做2次开发的工作太多了, 很痛苦的。

相关推荐

    eclipse sdk 3.7.2 的maven插件

    终于被我找到了一个maven插件包。配置好后,一切正常 eclipse sdk 3.7.2 的maven插件eclipse sdk 3.7.2 的maven插件eclipse sdk 3.7.2 的maven插件eclipse sdk 3.7.2 的maven插件eclipse sdk 3.7.2 的maven插件

    IDEA插件集合plugin离线包

    IDEA插件集合,提供几个常用的插件,省去下载安装的麻烦,目的只是跟大家提供一个方便. Alibaba Java Coding Guidelines idea-gitignore FindBugs-IDEA-1.0.1 LiveEdit MavenRunHelper MyBatis plugin 3.154 tomcat ...

    Maven_学习总结_全

    针对对初学者使用maven的遇到的问题的一些讲解 和学习的总结

    AspectJ-Maven插件

    Mojohaus AspectJ-Maven-Plugin 该插件使用AspectJ编译器(“ ajc”)将AspectJ方面编织到您的类中。 通常,在MavenReact器内以两种... 这是一种更复杂,功能更强大的方法,最适合当几个Maven项目应由一组共同的方面组

    maven入门到精通

    同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以 maven 下载很小( 1.1M ),在执行 maven 任务时,才会自动下载需要的插件。 这个基本原理与 Pear ――PHP扩展与...

    尚硅谷Java视频教程_Maven视频

    几个常用Maven命令 · 12.POM · 13.坐标 · 14.仓库 · 15.第二个Maven工程的目录结构和文件内容 · 16.依赖的基本操作 · 17.依赖的范围初步介绍 · 18.生命周期插件和目标 · 19.Maven插件的设置 · 20....

    Maven插件开发(三)——Java中Processor使用与maven-compiler-plugin的结合使用

    我们知道Maven只是个项目管理工具,如果要编译Java代码是不行的,而maven-compiler-plugin这个是Apache官方提供的Maven编译Java源码的功能插件,我们在项目中经常使用到,也就是我们平时使用的mvn compile指令就是...

    eclipse-maven3-plugin

    网上找了半天,没几个是离线安装maven插件的,大多都是在线安装,好多给出的下载资源根本不是eclipse插件,自己上传一个,给自己方便,也给大家方便吧

    sonar-maven-plugin:SonarQube Maven 插件 + 补丁

    2.5-快照(sonar.skip、sonar.java.libraries、sonar.java.binaries) 复杂的 maven 项目解析(例如,模块目录中的几个 pom 文件) Scala 支持(包括 src/main/scala 作为源和 src/test/scala 作为测试)

    详解安装Eclipse Maven插件的几种方法

    本篇文章主要介绍了详解安装Eclipse Maven插件的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

    marmots-opencms-maven-plugin:一个帮助 Opencms 模块开发的 Maven 插件

    一个帮助 Opencms 模块开发的 Maven 插件。 在查看它的实际效果 发布目标 通过 JLAN 服务器将修改后的资源发布到 opencms 配置属性 &lt; url&gt;smb://Admin:admin@localhost:1446/OPENCMS/ &lt; module&gt;org.marmots....

    Appium+Maven+TestNG(ReportNG)环境搭建(详细过程)

    一、下载eclipse,推荐下载Eclipse Luna java EE版本,自带maven插件,比较稳定。Eclipse Luna java EE版64位下载地址:...

    arch-unit-maven-plugin:围绕ArchUnit的Maven包装器,可轻松跨项目共享和实施架构规则

    ArchUnit Maven插件是周围的一个简单的Maven包装器,使您可以轻松地确保所有项目都遵循相同的体系结构规则。 ArchUnit是一个很棒的工具,可以执行一些其他静态分析工具根本无法实现的棘手检查:这些检查作为单元...

    mark:用于静态网站生成的极简Maven插件

    与其他解决方案不同,它作为插件紧密集成在Maven构建过程中,不需要特定的站点布局或复杂的设置:只需放入几个Markdown页面和一个Pug / Less模板,然后由生成器来处理细节… 用法 配置插件 将插件添加到您的构建...

    fileutils-maven-plugin

    目标概述fileutils-maven-plugin 提供了几个目标。 fileutils-maven-plugin:concatFileList 将文件内容连接到输出文件fileutils-maven-plugin:concatDirContent 将文件内容连接到输出文件fileutils-maven-plugin:...

    maven的安装和配置

    Apache Maven是一个很流行的软件项目管理和理解工具,它能够被用来构建和管理任何基于java的项目,主要有以下几个目标: • 简化构建过程 • 提供统一的构建系统 • 提供高质量的项目信息 • 鼓励更好的开发实践 ...

    Mybatis扩展插件XMBG.zip

    XMBG的出现是因为在使用MBG的过程中发现很多缺憾,虽然只是扩展了上面几个方面,但是我相信仍然有很多方向可以探索,因此在我完成预定的所有扩展点后就发布了这个插件。因时间仓促以及水平有限不可避免的会出现很多...

    multienv-maven-plugin:multienv-maven-plugin

    多环境Maven插件 执照 总览 在几种情况下,您对不同的环境(例如开发,测试,生产等)具有不同的配置(在现实生活中,通常有三种以上的环境)。 现在,您需要生成不同的工件,例如针对这些不同环境的war文件。 结合...

    gradle-dmt-plugin:一个Gradle插件,提供类似Maven的依赖项管理功能

    Gradle DMT插件介绍一个Gradle插件,提供类似Maven的依赖项管理和排除。 该插件提供了DSL,以直接配置依赖管理,也可以通过导入现有的Maven Bom来配置。 基于配置的依赖项管理,该插件将控制项目的直接和传递依赖项...

Global site tag (gtag.js) - Google Analytics