博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven生成war包的两种方式
阅读量:6868 次
发布时间:2019-06-26

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

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

 

<build>   
  <plugins>   
  ......   
   <plugin>   
      <groupId>org.apache.maven.plugins</groupId>   
      <artifactId>maven-war-plugin</artifactId>   
      <version>2.0.2</version>   
      <configuration>   
         <warSourceExcludes>WEB-INF/lib/log4j-${log4j.version}.jar</warSourceExcludes>   
      </configuration>   
   </plugin>   
  </plugins>   
</build>  
 
当然你可以指定war包的名称,输出的目录,webapp目录等等。
可以在需要打包的工程中直接设定:<pom>war</pom>
这样在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代码  

 

<build>  
   <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-dependency-plugin</artifactId>  
        <version>2.0</version>  
        <executions>  
           <execution>  
              <id>create-structure</id>  
              <phase>process-resources</phase>  
               <goals>  
                   <goal>unpack</goal>  
                </goals>  
                <configuration>  
                    <artifactItems>  
                       <artifactItem>  
                          <groupId>GROUPID</groupId>  
                           <artifactId>template</artifactId>  
                       </artifactItem>  
                 </artifactItems>  
                 <outputDirectory>  
                     ${project.build.directory}/${assembly.name}.war  
                  </outputDirectory>  
                </configuration>  
             </execution>  
             <execution>  
                 <id>copy-libs</id>  
                  <phase>process-resources</phase>  
                   <goals>  
                      <goal>copy</goal>  
                   </goals>  
                   <configuration>  
                      <artifactItems>  
                         <artifactItem>  
                             <groupId>jdom</groupId>  
                              <artifactId>jdom</artifactId>  
                          </artifactItem>  
                                ......  
                       </artifactItems>  
  
                        <outputDirectory>${project.build.directory}/${assembly.name}.war/WEB-INF/lib</outputDirectory>  
                    </configuration>  
                 </execution>  
            </executions>  
       </plugin>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-antrun-plugin</artifactId>  
            <version>1.3</version>  
            <executions>  
               <execution>  
                  <id>copy-config</id>  
                  <phase>process-resources</phase>  
                  <goals>  
                      <goal>run</goal>  
                   </goals>  
                   <configuration>  
                   <tasks>  
                       <copy todir="${project.build.directory}/${assembly.name}.war">  
                           <fileset dir="src/main/resources" />  
                       </copy>  
                       <zip destfile="${project.build.directory}/${assembly.name}-${project.version}-war.zip">  
                            <zipfileset dir="${project.build.directory}/${assembly.name}.war" includes="**\*.*"  excludes="*.zip" />  
                       </zip>  
                       <copy file="${project.build.directory}/${assembly.name}-${project.version}-war.zip"  
                                    tofile="${project.build.directory}/${assembly.name}-${project.version}.war" />  
                     </tasks>  
                     </configuration>  
                </execution>  
            </executions>  
       </plugin>  
       <plugin>  
           <groupId>org.codehaus.mojo</groupId>  
           <artifactId>build-helper-maven-plugin</artifactId>  
           <version>1.4</version>  
           <executions>  
              <execution>  
              <id>attach-artifacts</id>  
              <phase>package</phase>  
                 <goals>  
                     <goal>attach-artifact</goal>  
                 </goals>  
                 <configuration>  
                      <artifacts>  
                         <artifact>  
                             <file>${project.build.directory}/${assembly.name}-${project.version}.war</file>  
                              <type>war</type>  
                          </artifact>  
                       </artifacts>  
                  </configuration>  
               </execution>  
            </executions>  
         </plugin>  
    </plugins>  
</build>  
 当然这种方式也可以用来打ear包。对于打无页面操作系统的war包,个人认为用后者更灵活,当然建立假web工程,再依赖工程,通过第一种方式同样可以达到最终的结果。看个人喜好了。
 
结束语:maven真的很强大!

转载于:https://www.cnblogs.com/huapox/archive/2013/01/01/3251536.html

你可能感兴趣的文章
每天一个小算法(Shell Sort3)
查看>>
如何去掉给图片添加链接后的蓝色边框
查看>>
在线用户的简单的统计和显示(只是一种很局限的在线用户统计显示,先留着,以后再研究复杂的)...
查看>>
Centos下MongoDB数据库的安装以及配置开机自启动(三)
查看>>
关于window.showModalDialog 父子窗口传值,及刷新父窗等问题
查看>>
linux内核驱动module_init解析(1)
查看>>
linux常用命令&以及帮助命令
查看>>
apachebench的简单使用
查看>>
Appium完整安装教程
查看>>
python--元组tuple
查看>>
最大连续子数组
查看>>
用android模拟器Genymotion定位元素
查看>>
mysql函数大全
查看>>
子查询:相关子查询、无关子查询
查看>>
Python-使用Magellan进行数据匹配总结
查看>>
jersey rest webservice
查看>>
java 获取指定日前的前一天
查看>>
position
查看>>
ios内存管理(转)
查看>>
H5 离线缓存的用法
查看>>