在软件开发过程中,我们需要经常对项目进行打包并部署。这里的打包即-构建项目软件包。说白了,其实就是对项目中的各种文件,比如编译生成的字节码、配置文件、文档等,根据maven规范的格式或者配置的要求生成归档。最常见的就是对JAR包和WAR包打包。后者是一般都是web 项目。

通常情况下,我们的项目可能很大,也会划分成web 项目模块和一些后台模块。这个时候一般都是将web 项目打包成 war 包,然后再所有项目包括 jar包 打包成ear 包。maven都提供了不止一种方式,这里只使用最直观的一种方式,即mave的 maven-war-plugin 插件和 maven-ear-plugin 插件。下面通过一个例子解释下:
先介绍下项目结构:

mavenaggregator(项目根目录)  |----another-project ——代表项目其他模块|----my-project      ——代表项目web 模块|----projectear      ——打包 ear 的模块|----webwar          ——打包 war 的模块|----pom.xml         ——聚合项目的pom文件,用于一次构建整个项目

解释:这里创建一个聚合项目,然后在其中创建两个子模块,分别用于打包 war 和 ear。这样,每次构建整个聚合项目时,就能得到我们想要的 ear 包了。

war
在webwar 项目的 pom.xml 中添加如下配置:

<!-- 构建项目所需要的信息 -->  <build><finalName>myprojectwar</finalName><plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-war-plugin</artifactId>  <version>2.1.1</version><configuration><webResources><resource><directory>src/main/webapp</directory><targetPath>verification</targetPath><filtering>true</filtering></resource></webResources></configuration> </plugin>  </plugins>  </build>  

这里配置也指定了web项目的前台文件夹。

ear
首先,因为我们是要将整个项目都打包成一个ear 包,因此我们的projectear 模块会依赖其他模块,添加依赖如下:

<!-- 其他代码 -->  <dependencies>  <dependency>  <groupId>com</groupId>  <artifactId>my-project</artifactId>  <version>${project.version}</version><type>jar</type>  </dependency>  <dependency>  <groupId>com</groupId>  <artifactId>another-project</artifactId>  <version>${project.version}</version><type>jar</type>  </dependency>  <dependency>  <groupId>com</groupId>  <artifactId>webwar</artifactId>  <version>${project.version}</version><type>war</type>  </dependency>  </dependencies>
<!-- 其他代码 -->

然后在pom的build元素中配置 maven-ear-plugin 插件,同时指定要打包到ear 文件的jar包和资源。

<!-- 其他代码 --><build>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-ear-plugin</artifactId>  <version>2.9</version>  <configuration><!-- 指定要打包的 jar包和资源文件 --><packagingIncludes>META-INF/**,**/*.jar,**/*.war</packagingIncludes>  <!-- 指定要打包进来的模块 --><modules> <jarModule>  <groupId>com</groupId>  <artifactId>another-project</artifactId>  <includeInApplicationXml>true</includeInApplicationXml>  </jarModule>  <jarModule>  <groupId>com</groupId>  <artifactId>my-project</artifactId>  <includeInApplicationXml>true</includeInApplicationXml>  </jarModule>  <webModule>  <groupId>com</groupId>  <artifactId>webwar</artifactId>  </webModule>  </modules></configuration>  </plugin>  </plugins>  </build>
<!-- 其他代码 -->

最后回到项目根目录对整个项目进行一次打包即可:

mvn clean package

完整代码

Maven打包war和ear相关推荐

  1. Maven 打包war文件

    2019独角兽企业重金招聘Python工程师标准>>> pom.xml设置 1.设置打包类型为war <packaging>war</packaging> 2 ...

  2. SpringBoot项目在使用Maven打包war中遇到的问题

    问题描述 在使用maven打包(package)springboot项目为war项目后,在本地机器上使用Tomcat跑这个项目,访问资源时出现下面的错误: o.s.b.w.servlet.suppor ...

  3. maven打包war,导入本地jar包

    方法1: 一 . 在项目根目录创建lib文件夹,把jar放入lib文件夹中 二 . 在项目中使用本地jar pom文件配置如下: <properties><project.build ...

  4. idea maven打包war包项目

    1.配置打包方式 2.pom文件添加如些依赖, <dependency><groupId>javax.servlet</groupId><artifactId ...

  5. maven 打包war包时忽略一些配置文件

    使用过tomcat的童鞋应该都知道,tomcat是支持加载外部配置文件的,所以我们生成war包时不应该将配置文件也打包到war中,那么我们该怎么排除掉配置文件呢? 我就直接发一个pom.xml中的一个 ...

  6. maven打包war包

    打包: https://blog.csdn.net/u012586389/article/details/67635480 遇到的问题: 一.解决No compiler is provided in ...

  7. java ear war_[转] 基于Java的打包jar、war、ear包的作用与区别详解

    以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果.除jar以外对于J2EE来说还有war和ear.区 ...

  8. 使用idea进行Maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war

    使用idea进行Maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war 参考文章: (1) ...

  9. 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]

    转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 首先,项目必须得是Maven配置的项目. 增加了一个发布插件来实现. 在项目的pom ...

最新文章

  1. 珍惜鼠标,慎用双击。maxthon浏览器的双击功能毁了我一个微软鼠标一个罗技鼠标,伤心...
  2. 【学习笔记】Linux 命令万字解析(超详细)
  3. ThinkPHP入门--后盾视频
  4. ASP.NET页面对象模型:Page类介绍
  5. 防止页面被iframe包含进去
  6. avi和音频合成 ffmpeg_使用Java和ffmpeg把音频和视频合成视频的操作方法
  7. Xml转换成html表格代码,如何用C++代码将XML文件转换为HTML表格?
  8. onSingleTapUp()和onSingleTapConfirmed()的区别
  9. 文档流、脱离文档流分析
  10. 盘点俄罗斯大神写的几款软件,你用过几个?最后1个是我的童年
  11. 电力系统matlab实验报告,电力系统分析潮流实验报告
  12. 大数据技术原理与应用(第八章HBase测试)
  13. Ubuntu 18.04 firefox浏览器装flash
  14. C语言发展史——程序猿抗争史
  15. wps怎么下载仿宋gb2312_仿宋gb2312字体
  16. 法国蓬皮杜中心天猫官方旗舰店开业;洲际集团旗下高端品牌voco全球开业及签约酒店数突破100家 | 美通企业日报...
  17. 三大范式,ER图,外键,视图,索引,触发器
  18. 刷脸认证如何实现人脸又快又准完成校验?
  19. 离散傅里叶变换DFT
  20. 论文计算机的教学方法,对于计算机教学方法的探讨论文原稿

热门文章

  1. 利用JavaScript对HTML和CSS实现简单的动态操作
  2. webrtc QOS方法二(FEC)
  3. 三菱 FX5U PLC 4轴程序 控制松下伺服3个, 步进电机一个
  4. Python 之 Serial串口通信
  5. Go 并发编程Mutex(二)--源码
  6. 一起学:仓库管理的相关指标
  7. 数据库MYSQL笔记8——函数
  8. 专线映射地址_专线连接方式
  9. mysql dbo_sql的表名中的dbo是什么意思
  10. python配对t检验_置信度计算——t检验(配对样本t检验,AB实验置信度),T