博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大家都用什么Maven插件?及本人的几个常用插件分享
阅读量:6656 次
发布时间:2019-06-25

本文共 3477 字,大约阅读时间需要 11 分钟。

hot3.png

博客分类:
 
两个月前我只是一直知道有Maven,但从来没用过也没这个计划,直到我们的jar又多又乱,到了不理不行的地步的时候,我想到了Maven。
为了正统,我直接到Apache/Sonatype上去找资料,发现Sonatype(http://www.sonatype.com/)所提供的文档最为劲爆,很快就可以掌握Maven的使用,其中的Sonatype-maven-by-example.pdf最为直接,从单个简单项目到多项目管理,再到多项目管理的优化,无所不谈,我相信大家通过这个文档的系统学习,肯定能跟我那样,入门绝对不是问题。
我所用到的插件,拿出来晒一下,好做交流,其实用的还是很基本的能力:
1、maven-surefire-plugin:单元测试用。用法举例:
Xml代码  
收藏代码
  1. <plugin>  
  2.                 <groupId>org.apache.maven.plugins</groupId>  
  3.                 <artifactId>maven-surefire-plugin</artifactId>  
  4.                 <version>2.6</version>  
  5.                 <configuration>  
  6.                     <parallel>methods</parallel>  
  7.                     <skipTests>true</skipTests>  
  8.                 </configuration>  
  9.             </plugin>  
2、maven-compiler-plugin:编译插件,方便指定目标JDK版本,以及其他一些编译细节。用法举例:
Xml代码  
收藏代码
  1. <plugin>  
  2.                     <groupId>org.apache.maven.plugins</groupId>  
  3.                     <artifactId>maven-compiler-plugin</artifactId>  
  4.                     <version>2.3.2</version>  
  5.                     <configuration>  
  6.                         <source>1.6</source>  
  7.                         <target>1.6</target>  
  8.                     </configuration>  
  9.                 </plugin>  
3、maven-antrun-plugin:跑ant脚本的插件,如果原来的ant脚本还有用武之地或者有些工作还是喜欢ant来帮忙的话。用法举例:
Java代码  
收藏代码
  1. <plugin>  
  2.                 <artifactId>maven-antrun-plugin</artifactId>  
  3.                 <version>1.6</version>  
  4.                 <executions>  
  5.                     <execution>  
  6.                         <phase>generate-sources</phase>  
  7.                         <configuration>  
  8.                             <target name="copy-beans" description="--> copy necessary beans from application">  
  9.                                 <echo message="copy beans from application artifact"/>  
  10.                                 <copy todir="${beans.copy.to.dir}">  
  11.                                     <fileset dir="${beans.copy.from.dir}">  
  12.                                             <include name="**/Resource.java" />  
  13.                                             <exclude name="**/*.xml" />  
  14.                                     </fileset>  
  15.                                 </copy>  
  16.                                   
  17.                             </target>  
  18.                         </configuration>  
  19.                         <goals>  
  20.                             <goal>run</goal>  
  21.                         </goals>  
  22.                     </execution>  
  23.                 </executions>  
  24.             </plugin>  
因为我们设计一个applet的子项目,需要拷贝一些资源过来,而不是造成交叉依赖——大家说不定有更好的办法。
4、maven-war-plugin:webapp的必备插件,用来打包war。用法举例:
Xml代码  
收藏代码
  1. <plugin>  
  2.                 <artifactId>maven-war-plugin</artifactId>  
  3.                 <version>2.1.1</version>  
  4.                 <configuration>  
  5.                     <!-- exclude those which shared lib   
  6.                     <packagingExcludes>  
  7.                         WEB-INF/lib/nric-framework*.jar,  
  8.                         WEB-INF/lib/spring-core*.jar,  
  9.                         WEB-INF/lib/spring-asm*.jar,  
  10.                         WEB-INF/lib/commons-*.jar,  
  11.                         WEB-INF/lib/spring-aop*.jar,  
  12.                         WEB-INF/lib/aopalliance*.jar,  
  13.                         WEB-INF/lib/spring-beans*.jar,  
  14.                         WEB-INF/lib/spring-context*.jar,  
  15.                         WEB-INF/lib/spring-orm*.jar,  
  16.                         WEB-INF/lib/spring-tx*.jar,  
  17.                         WEB-INF/lib/ibatis*.jar,  
  18.                         WEB-INF/lib/oracle*.jar,  
  19.                         WEB-INF/lib/jcl-over-slf4j*.jar,  
  20.                         WEB-INF/lib/slf4j-*.jar,  
  21.                         WEB-INF/lib/javassist*.jar,  
  22.                         WEB-INF/lib/aspectjrt*.jar,  
  23.                         WEB-INF/lib/aspectjweaver*.jar,  
  24.                         WEB-INF/lib/spring-jdbc*.jar,  
  25.                         WEB-INF/lib/log4j*.jar,  
  26.                         WEB-INF/lib/quartz*.jar,  
  27.                         WEB-INF/lib/cglib*.jar,  
  28.                         WEB-INF/lib/asm-*.jar,  
  29.                         WEB-INF/lib/joda-time*.jar  
  30.                     </packagingExcludes>-->  
  31.                     <!-- Use this to include a selection of jars that will be included in the WAR -->  
  32.                     <!--   
  33.                     <packagingIncludes>  
  34.                         **/*.xml,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,**/*.jsp,  
  35.                         WEB-INF/lib/spring-web*.jar  
  36.                     </packagingIncludes>  
  37.                     -->  
  38.                     <archive>  
  39.                         <manifest>  
  40.                             <addClasspath>true</addClasspath>  
  41.                             <classpathPrefix>lib/</classpathPrefix>  
  42.                         </manifest>  
  43.                     </archive>  
  44.                 </configuration>  
  45.             </plugin>  
注意:我注释掉的部分一般用来做war减肥用,如果需要打包为ear的话
5、org.mortbay.jetty:jetty调试插件,用来启动web做集成测试、调试用。用法举例:
Xml代码  
收藏代码
  1. <plugin>  
  2.                 <groupId>org.mortbay.jetty</groupId>  
  3.                 <artifactId>jetty-maven-plugin</artifactId>  
  4.                 <version>7.0.1.v20091125</version>  
  5.                 <configuration>  
  6.                     <scanIntervalSeconds>10</scanIntervalSeconds>  
  7.                     <webAppConfig>  
  8.                         <contextPath>/nric-demo</contextPath>  
  9.                     </webAppConfig>  
  10.                 </configuration>  
  11.             </plugin>  
我觉得用插件的精髓是不在于多在于合适。希望大家也来分享下。
另外,关于私服问题,我的看法是有条件上没条件就免了,可选。
补充几点心得:
1、建议在parent的pom中使用好pluginManagement和dependencyManagement,而子项目引用即可;
2、使用参数,方便管理版本和重要参数;
3、明显不用的dependency要exclude掉(使用exclusion),避免过多垃圾;
4、合理设置子项目
附上Sonatype-maven-by-example.pdf。
——说明:版权完全为Sonatype所有,并敬请大家通过正式渠道下载最新版。

转载于:https://my.oschina.net/superise/blog/503904

你可能感兴趣的文章
我的友情链接
查看>>
LNMP环境下nginx、php-fpm的配置文件讲解
查看>>
会声会影截取视频教程
查看>>
Outlook2013 设置 @me.com 、 @icloud.com
查看>>
一文解析支持向量机(附公式)
查看>>
el-select使用方法及遇到数据回显的坑
查看>>
使用Canvas进行验证码识别
查看>>
Java 面试知识点解析(一)——基础知识篇
查看>>
Spring Cloud Spring Boot mybatis分布式微服务云架构(六)RESTful API单元测试
查看>>
关于swiper轮播图
查看>>
造成HashMap非线程安全的原因
查看>>
【本人秃顶程序员】在Java中使用函数范式提高代码质量
查看>>
IT兄弟连 JavaWeb教程 经典案例3
查看>>
OSChina 周日乱弹 —— 别嫁出去霍霍别人了
查看>>
Python学习2-列表和元组
查看>>
linux环境下安装jdk1.8
查看>>
mysql基础知识
查看>>
数据挖掘topic
查看>>
iOS开发 BOOL / bool / Boolean / NSCFBoolean
查看>>
js常用数值计算
查看>>