文章目录
  1. 1. maven生成war包的两种方式

maven生成war包的两种方式

maven 配置

war包即对WEB应用程序进行打包,用于应用容器的部署。如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了。打包方式有很多中,很多工具本身就支持此功能。下面主要介绍通过maven来操作的两种方式:

方法一:

   即第一反应的那种啦,就是利用maven的maven-war-plugin。

 

Xml代码  -242.png

  1. <****build****>   
  2.   <****plugins****>   
  3.   ……   
  4.    <****plugin****>   
  5.       <****groupId****>org.apache.maven.plugins</****groupId****>   
  6.       <****artifactId****>maven-war-plugin</****artifactId****>   
  7.       <****version****>2.0.2</****version****>   
  8.       <****configuration****>   
  9.          <****warSourceExcludes****>WEB-INF/lib/log4j-${log4j.version}.jar</****warSourceExcludes****>   
  10.       </****configuration****>   
  11.    </****plugin****>   
  12.   </****plugins****>   
  13. </****build****>

  

 

当然你可以指定war包的名称,输出的目录,webapp目录等等。

可以在需要打包的工程中直接设定:war

这样在install的时候就会对此工程生成相应配置的war包,原来此web工程依赖的其他工程全部会以jar包的形式出现在lib目录下,所以不需要再去关心war包中集成的jar包是否完整,maven已经帮你做完了。

 

顺便提一句,在jboss中发布war包,如果包中包含log4j.jar,会报错,所以在本例中将此jar包排除在外。

 

方法二:

不用war插件,而是用到另外三个插件:maven-dependency-plugin 、maven-antrun-plugin 、 build-helper-maven-plugin

下面分别说明下着三个插件在此过程扮演的角色:

maven-dependency-plugin :相当于数据收集器,该依赖那些jar包,该加载那些resource信息。

maven-antrun-plugin:完成收集完文件夹的压缩和包的重命名。

build-helper-maven-plugin:让压缩包拥有男人本色,oh sorry 是war本色。

 

在写pom.xml配置前,先说明下目录结构

root

|

|—template

|

|—wardir

 

其中这两个目录都作为maven的独立工程,下面要写配置在wardir下的pom.xml中

Xml代码  %!(EXTRA markdown.ResourceType=, string=, string=)

  1. <****build****>  
  2.    <****plugins****>  
  3.       <****plugin****>  
  4.         <****groupId****>org.apache.maven.plugins</****groupId****>  
  5.         <****artifactId****>maven-dependency-plugin</****artifactId****>  
  6.         <****version****>2.0</****version****>  
  7.         <****executions****>  
  8.            <****execution****>  
  9.               <****id****>create-structure</****id****>  
  10.               <****phase****>process-resources</****phase****>  
  11.                <****goals****>  
  12.                    <****goal****>unpack</****goal****>  
  13.                 </****goals****>  
  14.                 <****configuration****>  
  15.                     <****artifactItems****>  
  16.                        <****artifactItem****>  
  17.                           <****groupId****>GROUPID</****groupId****>  
  18.                            <****artifactId****>template</****artifactId****>  
  19.                        </****artifactItem****>  
  20.                  </****artifactItems****>  
  21.                  <****outputDirectory****>  
  22.                      ${project.build.directory}/${assembly.name}.war  
  23.                   </****outputDirectory****>  
  24.                 </****configuration****>  
  25.              </****execution****>  
  26.              <****execution****>  
  27.                  <****id****>copy-libs</****id****>  
  28.                   <****phase****>process-resources</****phase****>  
  29.                    <****goals****>  
  30.                       <****goal****>copy</****goal****>  
  31.                    </****goals****>  
  32.                    <****configuration****>  
  33.                       <****artifactItems****>  
  34.                          <****artifactItem****>  
  35.                              <****groupId****>jdom</****groupId****>  
  36.                               <****artifactId****>jdom</****artifactId****>  
  37.                           </****artifactItem****>  
  38.                                 ……  
  39.                        </****artifactItems****>  
  40.                         <****outputDirectory****>${project.build.directory}/${assembly.name}.war/WEB-INF/lib**</**outputDirectory****>  
  41.                     </****configuration****>  
  42.                  </****execution****>  
  43.             </****executions****>  
  44.        </****plugin****>  
  45.         <****plugin****>  
  46.             <****groupId****>org.apache.maven.plugins</****groupId****>  
  47.             <****artifactId****>maven-antrun-plugin</****artifactId****>  
  48.             <****version****>1.3</****version****>  
  49.             <****executions****>  
  50.                <****execution****>  
  51.                   <****id****>copy-config</****id****>  
  52.                   <****phase****>process-resources</****phase****>  
  53.                   <****goals****>  
  54.                       <****goal****>run</****goal****>  
  55.                    </****goals****>  
  56.                    <****configuration****>  
  57.                    <****tasks****>  
  58.                        <****copy** todir=”${project.build.directory}/${assembly.name}.war”**>  
  59.                            <****fileset** dir=”src/main/resources” **/>  
  60.                        </****copy****>  
  61.                        <****zip** destfile=”${project.build.directory}/${assembly.name}-${project.version}-war.zip”**>  
  62.                             <****zipfileset** dir=”${project.build.directory}/${assembly.name}.war” includes=”***.*”  excludes=”*.zip” **/>  
  63.                        </****zip****>  
  64.                        **<**copy file=”${project.build.directory}/${assembly.name}-${project.version}-war.zip”  
  65.                                     tofile=”${project.build.directory}/${assembly.name}-${project.version}.war” />  
  66.                      </****tasks****>  
  67.                      </****configuration****>  
  68.                 </****execution****>  
  69.             </****executions****>  
  70.        </****plugin****>  
  71.        <****plugin****>  
  72.            <****groupId****>org.codehaus.mojo</****groupId****>  
  73.            <****artifactId****>build-helper-maven-plugin</****artifactId****>  
  74.            <****version****>1.4</****version****>  
  75.            <****executions****>  
  76.               <****execution****>  
  77.               <****id****>attach-artifacts</****id****>  
  78.               <****phase****>package</****phase****>  
  79.                  <****goals****>  
  80.                      <****goal****>attach-artifact</****goal****>  
  81.                  </****goals****>  
  82.                  <****configuration****>  
  83.                       <****artifacts****>  
  84.                          <****artifact****>  
  85.                              <****file****>${project.build.directory}/${assembly.name}-${project.version}.war**</**file****>  
  86.                               <****type****>war</****type****>  
  87.                           </****artifact****>  
  88.                        </****artifacts****>  
  89.                   </****configuration****>  
  90.                </****execution****>  
  91.             </****executions****>  
  92.          </****plugin****>  
  93.     </****plugins****>  
  94. </****build****>

  

 当然这种方式也可以用来打ear包。对于打无页面操作系统的war包,个人认为用后者更灵活,当然建立假web工程,再依赖工程,通过第一种方式同样可以达到最终的结果。看个人喜好了。

 

结束语:maven真的很强大!

文章目录
  1. 1. maven生成war包的两种方式