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

maven生成war包的两种方式相关推荐

  1. drf-路由组件:自动生成Routers路由、 使用方法、视图集中附加action的声明、自动生成路由router的两种方式的URL区别

    目录 一. 自动生成Routers路由 二. 使用方法 1) 创建router对象,并注册视图集,例如 2)添加路由数据 三. 代码演示 四. 视图集中附加action的声明 五. 自动生成路由rou ...

  2. KEIL / MDK生成BIN文件的两种方式

    KEIL / MDK生成BIN文件的两种方式 1 KEIL工程配置入口 点击"魔术棒"图标(Option for Target) 在After Build/Rebuild选项卡中, ...

  3. 从Maven中央仓库网站下载jar包的两种方式,将会伴随java后端开发者的整个职业生涯

    这个肥肠重要的网站就是:https://mvnrepository.com/ 下面我会以mysql-connector-java-8.0.26.jar为例,教会你使用两种方式下载使用jar包资源 首先 ...

  4. IDEA中打jar包的两种方式

    在讲这两种方式之前,我们先来说明一下什么是java中的jar文件 jar (Java Archive File),翻译过来就是java的档案文件,它其实也类似于我们windows下的zip文件,唯一的 ...

  5. idea中java程序打jar包的两种方式(超详细)

    java程序打成的jar包有两种类型,一种是可直接执行的runnable jar文件,另一种是包含多个主类,运行时需要指定主类全类名的jar包,下面我们细说在idea中两种jar包的打包方法及执行ja ...

  6. Python调用Jar包的两种方式

    概览 因工作场景,需要在python代码里调用Jar包来实现一些功能,调研下来主要有两种方式: java -jar xx.jar JPype 环境配置 因为要在公司内网操作,所以需要通过离线方式进行安 ...

  7. Hibernate中自动生成数据库表的两种方式

    第一种方式:Hibernate中利用工具类自动生成数据库表 1.建好POJO object, XML Mapping File,配置文件(hibernate.cfg.xml). 2.编写工具类 imp ...

  8. Python导入模块(包)的两种方式 TypeError: 'module' object is not callable

    Python编程时明明在开始处import了相关包,但是调用函数时就报错如下: TypeError: 'module' object is not callable Python中有两种导入包(模块, ...

  9. 5.Maven和Eclipse整合(两种方式进行插件的安装),Maven相关设置,Eclipse下创建Maven项目

     1  第一种方式是:在连网的情况下,通过在helpàInstall下安装. 新的地址是:http://download.eclipse.org/technology/m2e/releases 2 ...

最新文章

  1. ajax提交相对路径报错,ajax提交请求为啥url要用这个函数encodeURI
  2. matlab实现将一个文件夹里面的pcm文件依次合并成一个信号的函数
  3. java的Comparator和Comparable
  4. SQL语句--INSERT INTO SELECT 语句用法示例
  5. session 存放对象变量,及遇到的奇怪现象
  6. Java集合---Arrays类源码解析
  7. python画矩形函数drawrectangle_Python3 tkinter基础 Canvas create_rectangle 画矩形
  8. 德国拜尔集团迎来人工智能专家--李飞飞
  9. Oracle 命名服务和监听程序
  10. gif透明背景动画_ppt模板3D卡通GIF动画PPT素材,多种多样的日常动作
  11. 高校固定资产折旧使用计算机,第六章固定资产_计算机会计学_ppt_大学课件预览_高等教育资讯网...
  12. 计算机桌面工具栏,好用的4D桌面工具栏必备,整洁的桌面小众软件
  13. [个人笔记] origin学习 入门教程
  14. 保护您眼睛视力 对Win7/Vista/XP作如下设置
  15. 一款很漂亮的一天只弹窗一次的公告
  16. python 实现combination和permutation
  17. 「四年总结」一名程序猿的打怪升级之路
  18. 英特尔深度相机- Python 包装器的示例代码
  19. VC运行库安装错误0x80240017解决过程
  20. 计算机休眠后无法唤醒出现蓝屏,电脑休眠后无法唤醒怎么办【解决方法】

热门文章

  1. HTTP中Accept与Content-Type区别
  2. jQuery --- 实现 checkbox 样式的单选框
  3. 斐波那契数列及青蛙跳台阶问题
  4. c++builder Delphi 直接使用剪贴板 Clipboard
  5. 界面编程与视图(View)组件
  6. 内外兼备的企业blog
  7. 设计模式总结——代理模式以及java的动态代理
  8. JavaScript = TypeScript 类入门
  9. 让WPF和SL控件同时支持绑定和赋值
  10. LVS负载均衡之持久性连接介绍(session篇)