maven生成war包的两种方式

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

方法一:

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

 

 
   
  ...... 
    
      org.apache.maven.plugins 
      maven-war-plugin 
      2.0.2 
       
         WEB-INF/lib/log4j-${log4j.version}.jar 
       
    
   

 

当然你可以指定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中


   
      
        org.apache.maven.plugins
        maven-dependency-plugin
        2.0
        
           
              create-structure
              process-resources
               
                   unpack
                
                
                    
                       
                          GROUPID
                           template
                       
                 
                 
                     ${project.build.directory}/${assembly.name}.war
                  
                
             
             
                 copy-libs
                  process-resources
                   
                      copy
                   
                   
                      
                         
                             jdom
                              jdom
                          
                                ......
                       

                        ${project.build.directory}/${assembly.name}.war/WEB-INF/lib
                    
                 
            
       
        
            org.apache.maven.plugins
            maven-antrun-plugin
            1.3
            
               
                  copy-config
                  process-resources
                  
                      run
                   
                   
                   
                       
                           
                       
                       
                            
                       
                       
                     
                     
                
            
       
       
           org.codehaus.mojo
           build-helper-maven-plugin
           1.4
           
              
              attach-artifacts
              package
                 
                     attach-artifact
                 
                 
                      
                         
                             ${project.build.directory}/${assembly.name}-${project.version}.war
                              war
                          
                       
                  
               
            
         
    

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

 

结束语:maven真的很强大!

你可能感兴趣的:(服务搭建)