您的位置:首页 > 编程语言 > Java开发

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

2015-01-12 14:13 417 查看

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

博客分类:
Java框架mavenSpringFlexMyeclipseWeb 

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

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

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

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

Xml代码  


<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版本,以及其他一些编译细节。用法举例:

Xml代码  


<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来帮忙的话。用法举例:

Java代码  


<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="${be
c9c5
ans.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。用法举例:

Xml代码  


<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做集成测试、调试用。用法举例:

Xml代码  


<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所有,并敬请大家通过正式渠道下载最新版。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java maven