Maven学习笔记——常用插件配置详解

先将我用到的自定义变量贴过来,防止插件中出现一些变量,大家不理解      

Java代码    收藏代码
  1.   
  2.   
  3.     tools  
  4.     UTF-8  
  5.   

project.build.name:    用来定义war包名称   
project.build.sourceEncoding:    用来定义资源文件的编码格式   

下面开始讲解常用的maven插件配置   

一、编译插件      
Java代码    收藏代码
  1.   
  2.   
  3.     org.apache.maven.plugins  
  4.     maven-compiler-plugin  
  5.       
  6.         1.6  
  7.         1.6  
  8.         ${project.build.sourceEncoding}  
  9.       
  10.   

source:   源代码编译版本;   
target:   目标平台编译版本;   
encoding:   字符集编码。   

二、设置资源文件的编码方式      
Java代码    收藏代码
  1.   
  2.   
  3.     org.apache.maven.plugins  
  4.     maven-resources-plugin  
  5.     2.4.3  
  6.       
  7.           
  8.             compile  
  9.           
  10.       
  11.       
  12.         ${project.build.sourceEncoding}  
  13.       
  14.   

xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制 ${project.build.sourceEncoding}      

三、自动拷贝jar包到target目录      
Java代码    收藏代码
  1.   
  2.   
  3.     org.apache.maven.plugins  
  4.     maven-dependency-plugin  
  5.     2.6  
  6.       
  7.           
  8.             copy-dependencies  
  9.             compile  
  10.               
  11.                 copy-dependencies  
  12.               
  13.               
  14.                   
  15.                 ${project.build.directory}/lib  
  16.                   
  17.                 false  
  18.                   
  19.                 true  
  20.               
  21.           
  22.       
  23.   


在部署war包时,需要将项目依赖的jar包,也打到war包中,因此就会用到上述插件   

四、生成源代码jar包      
Java代码    收藏代码
  1.   
  2.   
  3.     maven-source-plugin  
  4.     2.1  
  5.       
  6.           
  7.         true  
  8.         ${project.build.sourceEncoding}  
  9.       
  10.       
  11.           
  12.             compile  
  13.               
  14.                 jar  
  15.               
  16.           
  17.       
  18.   

该插件主要用于在打jar包时,把源代码也打成jar包   

五、将项目打成jar包      
Java代码    收藏代码
  1.   
  2.   
  3.     org.apache.maven.plugins  
  4.     maven-jar-plugin  
  5.     2.4  
  6.       
  7.           
  8.               
  9.                   
  10.                 true  
  11.                   
  12.                 lib/  
  13.                   
  14.                 com.zhengtian.tools.service.phone.MobilePhoneTool  
  15.               
  16.           
  17.       
  18.   


在将项目打成jar包时,有时会需要将项目打成可以直接运行的jar包,因此就需要将项目依赖的jar包也打入jar包中,此时需要在Eclipse上安装例外一个插件,用来打可执行jar包,详情见链接   http://zheng12tian.iteye.com/blog/1765626      

六、将项目打成war包      
Java代码    收藏代码
  1.   
  2.   
  3.     org.apache.maven.plugins  
  4.     maven-war-plugin  
  5.     2.1.1  
  6.       
  7.           
  8.       
  9.   

encoding:   强制字符集编码   
warName:   war包名字——platform.war   
webappDirectory:   产生war前,用于存放构建war包的目录——target/platform。   
warSourceDirectory:   我把web工程搞成了eclipse下的WTP类型。我不喜欢maven产生的webapp目录,更喜欢WebContent!   

需要注意的是:      
采用上述插件部署项目的话,使用   clean package tomcat:redeploy   命令。使用该命令前,需要先启动tomcat,实际上是为了让tomcat启动manager项目,实现动态部署   

此部署方式虽然也是动态部署的范畴,但是每次修改文件后,需要手动再次重新部署,才会加载更改。   

如果想让tomcat自动扫描项目的改动,自动加载,那么需要将maven工程的java全部编译的webapp目录下,然后将jar包和资源文件也打到webapp目录。最后在$CATALINA_HOME/conf /Catalina/localhost中添加一个xml文件,修改docbase为webapp目录。   

Tomcat常用的部署方式介绍:   http://blog.csdn.net/yangxueyong/article/details/6130065      

配置描述:当你的pom文件中把你的当前项目的packaging配置为war后,maven会使用该插件将当前项目生成war文件,但是有时候我们不想要war文件,只想让maven生成当前项目的网站目录结构,尤其是在调试的时候,因为生成war文件的同时,会生成当前项目的网站目录结构,这样一来,浪费了打包的时间和磁盘的空间!

maven使用war插件生成war文件所用的目标(goal)为war,从帮助文档中可以看出,war插件还有一个目标(goal)是exploded,即,只生成目录结构,而不生成war文件。

参见:http://maven.apache.org/plugins/maven-war-plugin/plugin-info.html

可以在当前目录下直接使用mvn war:exploded,就能生成当前项目的网站目录结构。


使用mvn war:exploded生成网站目录结构的时候,war插件会把src/main/webapp目录下的内容全部copy到target/${finalName}目录下,但是,有时候webapp里的一些资源部需要copy,比如我会在src/main/webapp的js目录下放很多jQuery的插件,其中包括插件的帮助文档;但是我可能只会用到其中一部分插件。所以在生成网站目录结构的时候,我根本不需要把src/main/webapp的js目录下的所以文件都copy到target/${finalName}目录中,这时候就需要对exploded目标(goal)进行资源过滤了——不把没用的资源copy到网站的目录结构中去:

[html]   view plain  copy
  1. <plugin>  
  2.     <artifactId>maven-war-pluginartifactId>  
  3.     <configuration>  
  4.         <warSourceExcludes>js/参考/**warSourceExcludes>  
  5.     configuration>  
  6. plugin>  

说明:上面的配置,使用了war插件的warSourceExcludes参数,该参数是一个String类型,需要把被排除的路径或文件使用逗号(comma)间隔开。

参见:

1、http://www.wsria.com/archives/1335

2、http://maven.apache.org/plugins/maven-war-plugin/exploded-mojo.html#warSourceDirectory



七、在打包时,需要清空一些指定的目录      

配置描述:maven提供了很多有用插件,如mvn clean使用到的maven-clean-plugin,mvn compile使用到的maven-compile-plugin等,这些插件可以通过pom文件绑定到maven三个生命周期(life-cycle)的各阶段(phase)上,也可以在命令行(如Windows下的cmd)中单独由mvn命令调用,如mvn clean,可以调用maven-clean-plugin的clean目标(goal)。对于绑定到各阶段(phase)运行的插件的参数(parameter)可以用标签(tag)配置,但是在该插件在命令行下单独由mvn命令调用,那么这个参数该如何使用pom文件配置呢?比如,在一个J2EE项目中,想使用mvn clean命令清除target里的内容的同时,也清除tomcat/webapp下的相应目录,该怎么办呢?这就需要在pom文件中对插件进行全局配置了。

[html]   view plain  copy
  1. <plugin>  
  2.     <artifactId>maven-clean-pluginartifactId>  
  3.     <configuration>  
  4.         <verbose>trueverbose>  
  5.         <filesets>  
  6.             <fileset>  
  7.                 <directory>c:/adirectory>  
  8.             fileset>  
  9.       filesets>  
  10.     configuration>  
  11. plugin>  

插件的配置分为局部配置和全局配置,本文中对antrun和resource插件的配置是局部配置,对clean插件的配置是全局配置,能看出差别吧?

局部配置的标签(tag)放在标签(tag)里边,而全局配置的标签(tag)则放在标签(tag)里边,因为全局配置里根本就没有标签(tag),因为全局配置针对的是该插件的全部目标(goal)配置的!

本例中,删除的是C:/a目录,即,当用户在该maven项目中执行mvn clean后,除了删除clean插件默认的project.build.directoryproject.build.outputDirectory,project.build.testOutputDirectory, 和 project.reporting.outputDirectory目录外

(参考:http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html#filesets),

还会删除C:/a目录。

Maven学习笔记——常用插件配置详解_第1张图片

注意,该配置仅针对本项目有效,即,用户在当前项目下使用mvn clean时,会删除C:/a目录;当用户在其他没有如此配置clean插件的maven项目中执行mvn clean时,不会删除C:/a目录。

设置fileset的目录时候用到的标签不能乱用,比如

,否则maven没法识别,因为maven使用pom设置插件参数(parameter)的时候用的是设置java bean的方式,之所以用标签,是因为在org.apache.maven.plugin.clean.Fileset.java中,Fileset类只有如下成员变量:

(参见:http://search.maven.org/remotecontent?filepath=org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1-source-release.zip)

[java]   view plain  copy
  1. private File directory;  
  2.   
  3. private String[] includes;  
  4.   
  5. private String[] excludes;  
  6.   
  7. private boolean followSymlinks;  

相关阅读:

1、Maven clean plugin - delete additional directories

http://maven.40175.n5.nabble.com/Maven-clean-plugin-delete-additional-directories-td122794.html


八、利用tomcat-maven-plugin插件将项目自动打包并部署到tomcat中      
Java代码    收藏代码
  1.    
  2.       
  3.         org.codehaus.mojo  
  4.         tomcat-maven-plugin  
  5.           
  6.             tomcat6-manager  
  7.             /${project.build.name}  
  8.             http://localhost:8080/manager  
  9.             admin  
  10.             admin  
  11.           
  12.           
  13.               
  14.                 deploy  
  15.                   
  16.                     deploy  
  17.                   
  18.               
  19.           
  20.       
  21.   

path:   是指项目部署到tomcat后的项目名称   
url:   是指tomcat的manager访问地址   
server:   这个是tomcat服务名称设置,需要配置maven的settings.xml文件,在servers节点中手动配置server,如下所示:   
Java代码    收藏代码
  1.   
  2.     tomcat6-manager  
  3.     admin  
  4.     admin  
  5.   


九、利用cargo-maven2-plugin插件将项目自动打包并部署到tomcat中      



配置描述:使用maven做web项目时,cargo插件可以帮助你完成WAR包到服务器的部署及服务器的启动和关闭等工作,方便,快速!

[html]   view plain  copy
  1. <plugin>  
  2.     <groupId>org.codehaus.cargogroupId>  
  3.     <artifactId>cargo-maven2-pluginartifactId>  
  4.     <version>1.2.0version>  
  5.     <configuration>  
  6.         <container>  
  7.             <containerId>${server_name}containerId>  
  8.             <home>${server_home}home>  
  9.         container>  
  10.         <configuration>  
  11.             <type>existingtype>  
  12.             <home>${server_home}home>  
  13.             <properties>  
  14.                 <cargo.servlet.port>8088cargo.servlet.port>  
  15.             properties>  
  16.         configuration>  
  17.     configuration>  
  18. plugin>  

注意,如果你的tomcat服务器的端口使用的不是默认的8080(如本例中的8088),则需要使用cargo.servlet.port参数将cargo的监听端口也配置到tomcat的那个监听端口(如本例中的8088),否则使用mvn cargo:run启动的服务器会在120000毫秒(120秒)后自动关闭!

mvn cargo:start命令完成WAR包部署后,启动服务器,然后会将服务器立即关掉;

mvn cargo:run命令完成WAR包部署后,启动服务器,直到你Ctrl+C将服务器关掉;

mvn cargo:stop命令关闭服务器。

参考:http://cargo.codehaus.org/Maven2+plugin


Java代码   收藏代码


  1.   
  2.                   
  3.                 org.codehaus.cargo  
  4.                 cargo-maven2-plugin  
  5.                 1.2.3  
  6.                   
  7.                   
  8.                       
  9.                       
  10.                           
  11.                         tomcat6x  
  12.                           
  13.                         E:\Program Files\tomcat-6.0.32  
  14.                       
  15.                       
  16.                       
  17.                           
  18.                         existing  
  19.                           
  20.                         E:\Program Files\tomcat-6.0.32  
  21.                           
  22.                           
  23.                               
  24.                             http://localhost:8080/manager  
  25.                               
  26.                             admin  
  27.                               
  28.                             admin  
  29.                               
  30.                           
  31.                       
  32.                   
  33.               


username和password:   是指tomcat的tomcat-users.xml文件中配置的,文件路径为E:\Program Files\tomcat-6.0.32\conf\tomcat-users.xml,如下所示:   

Java代码    收藏代码
  1. "manager"/>   
  2. "admin" roles="manager" username="admin"/>   


十、有时候插件检查不通过,需要人为的忽略对有些插件的检查      
Java代码    收藏代码
  1.   
  2.   
  3.       
  4.           
  5.             org.eclipse.m2e  
  6.             lifecycle-mapping  
  7.             1.0.0  
  8.               
  9.                   
  10.                       
  11.                           
  12.                           
  13.                               
  14.                                 org.apache.maven.plugins  
  15.                                 maven-dependency-plugin  
  16.                                 [2.0,)  
  17.                                   
  18.                                     copy-dependencies  
  19.                                   
  20.                               
  21.                               
  22.                                   
  23.                               
  24.                           
  25.                       
  26.                   
  27.               
  28.           
  29.       
  30.   

十一、maven-resources-plugin

配置描述:把web项目的输出copy到tomcat的webapp下

[html]   view plain  copy
  1. <plugin>  
  2.     <groupId>org.apache.maven.pluginsgroupId>  
  3.     <artifactId>maven-resources-pluginartifactId>  
  4.     <version>2.5version>  
  5.     <executions>  
  6.         <execution>  
  7.             <id>deploy-websiteid>  
  8.             <phase>packagephase>  
  9.             <goals>  
  10.                 <goal>copy-resourcesgoal>  
  11.             goals>  
  12.             <configuration>  
  13.                 <outputDirectory>${server_home}/webapps/${project.build.finalName}outputDirectory>  
  14.                 <resources>  
  15.                     <resource>  
  16.                         <directory>${project.build.directory}/${project.build.finalName}directory>  
  17.                     resource>  
  18.                 resources>  
  19.             configuration>  
  20.         execution>  
  21.     executions>  
  22. plugin>  


十二、maven-antrun-plugin

配置描述:在maven中使用antrun调用bat文件

(我这里调用的是tomcat的startup.bat文件,但是没有成功启动tomcat,提示说环境变量没配置,可我双击运行startup.bat将就可以运行,奇怪了……)

(现在知道原因了:antrun运行的bat文件,实际上是在${basedir}上运行bat文件里的内容,而tomcat的startup.bat文件在运行时会调用同目录下的其他bat文件,而这些bat文件在${basedir}目录下不存在!

解决方法:使用令一个bat文件,如mystartup.bat运行startup.bat,注意在运行startup.bat之前,需要在mystartup.bat文件中把目录切换到startup.bat所在的目录,搞定!

具体做法,参见:使用Maven的antrun插件启动Tomcat的两种方法:http://blog.csdn.net/lslxdx/article/details/7245695)

参见:http://markmail.org/message/c3igpnp7dvkajsrl


[html]   view plain  copy
  1. <plugin>  
  2.     <artifactId>maven-antrun-pluginartifactId>  
  3.     <executions>  
  4.       <execution>  
  5.         <id>start-serverid>  
  6.         <phase>packagephase>  
  7.         <configuration>  
  8.           <tasks>  
  9.                <exec  
  10.                  executable="${server_home}/bin/startup.bat"  
  11.                  >  
  12.                exec>  
  13.           tasks>  
  14.         configuration>  
  15.         <goals>  
  16.           <goal>rungoal>  
  17.         goals>  
  18.       execution>  
  19.     executions>  
  20. plugin>  

你可能感兴趣的:(maven)