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

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

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


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

[b]1、maven-surefire-plugin[/b]:单元测试用。用法举例:

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


[b]2、maven-compiler-plugin[/b]:编译插件,方便指定目标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>



[b]3、maven-antrun-plugin[/b]:跑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的子项目,需要拷贝一些资源过来,而不是造成交叉依赖——大家说不定有更好的办法。

[b]4、maven-war-plugin[/b]: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的话

[b]5、org.mortbay.jetty[/b]: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所有,并敬请大家通过正式渠道下载最新版。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值