问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Maven 是怎样创建War 包

发布网友 发布时间:2022-04-29 02:01

我来回答

1个回答

热心网友 时间:2022-06-28 05:45

最近在网上看到一篇介绍maven基础知识的文章,觉得对初学Maven的朋友一定有帮助。水平有限,翻译的不好,请大家见谅。
介绍
在处理WEB应用的时候,最终使用的工程文件是以War包的形式交付。Maven编译系统可以轻松的创建War包。接下来就让我们看看Maven是如何把一个源文件的工程转换成War包的。
Maven 版本 Apache Maven 3.0.4

工程实例
让我们来看看这个非常典型的Maven化的WEB工程

对应的POM.xml如下:

我们用此命令War包
1 mvn package

War生成在根目录下
1 /target/myprojectname.war
如下图,概况Maven生成War包过程

Maven 默认配置
我们都知道Maven可以很容易的把源文件工程创建为War包,但是POM文件中什么也没有设置。这是怎么回事啊?实际上Maven有自己默认的设置。这称之为 “convention over configuration”,Maven在配置中提供默认值。
第一,因为有一些Maven插件本身就与Maven 的生命周期绑定在一起。例如,在编译阶段使用
compiler:compile 作为默认命令。这就意味着当执行到编译阶段compiler plugin 被调用执行。如果选择生成WAR,那么 war:war 会与这个阶段绑定。
第二,当没有明确设置参数的时候,插件都会有自己默认值。例如 compiler:compile 目标有个参数是 compilerId。当默认值是 javac就意味着JDK 会被使用。当需要生成其他形式时可以重写此配置。
第三,一些设置包含在 Super POM,此文件是POM文件默认继承的。从Mavne3 起 Super POM 被放在
1 maven_dir/lib/maven-model-builder-3.0.3.jar:org/apache/maven/model/pom-4.0.0.xml
在这里我们可以发现很多默认的配置信息

Maven 生命周期
在我们的工程中,当执行 mvn package 命令,maven会执行它整个生命周期中的六个阶段
1 process-resources, compile, process-test-resources, test-compile, test and package
每个阶段会包含一个或多个目标。Maven 插件提供目标:一个插件可以有一个或多个目标。例如
Compiler 插件有两个目标:compiler:compile 和 compiler:testCompile
我们可以使用 mvn help:describe -Dcmd=phasename 命令列出如下内容

下面让我们看看每个目标
1.resources:resources
此目标用来将资源文件夹下的内容拷贝到输出目录
2.compiler:compile
此目标编译源项目工程

3.resources:testResources
此目标拷贝测试资源到测试输出目录

4.compiler:testCompile
此目标编译测试项目

5.surefire:test

此目标执行工程的单元测试,编译的测试类放在 /target/test-classes

6.war:war
此目录创建War包。它会把所有需要的文件放在
1 /target/myprojectname/
而后将他们打包生成 **.war。其中一个步骤是将 /src/main/webapp/ 拷贝到输出目录。

War插件另外一个重要步骤是拷贝Class文件到到 WEB-INF/classes目录和项目所依赖的jar包到 WEB-INF/lib目录。
默认情况下,插件还包含两个Maven描述文件:
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties 文件,META-INF/maven/${groupId}/${artifactId}/pom.properties

1 #Generated by Maven
2 #Sat May 12 00:50:42 CEST 2012
3 version=1.0-SNAPSHOT
4 groupId=mygroup.com
5 artifactId=myprojectname

最终的War包放在/target/目录下。
项目依赖
pom.xml文件会有一个默认的(JUnit)依赖。我们可以加另外一个常用的Jar log4j。
1
2 log4j
3 log4j
4 1.2.16
5
当没有设置依赖范围 ( scope),默认为 compile scope。这就意味着此依赖在编译、测试、运行阶段都可以得到。
只要是运行中会用到的jar包,都会拷贝到 /WEB-INF/lib目录

转载
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
修复征信是不是真的? 市面上征信修复公司可靠吗? 征信修复公司是真是假,真的可以修复吗? Emulex FC HBA卡 皮肤毛囊炎怎样治 银行自动扣款什么原因 银行什么情况自动扣款 贷款自动扣款什么意思 粤省事办理准生证需要多久 粤省事办理准生证步骤 为什么于嘉说山猫队和网队的比赛,少了易建联山猫进攻都没那么流畅了... java里面的maven难吗? 怎么查看maven本地仓库地址 Maven中的参数分别是什么意思? maven如何安装?有哪些常用命令 maven具体干嘛的 如何执行Maven命令? 如何创建maven文件 maven是干嘛的? 苹果手机12照片如何压缩成文件夹- 问一问 怎样解压手机压缩照片 手机上的照片怎么解压 华为魅特40与华为p40purl区别? 关于人类发明创造的故事有哪些? 科技创新小故事 银行早上几点钟上班 记事本中如何插入计算机的时间和日期 创新的小故事 银行的营业时间是上午几点到下午几点? 银行一般是早上几点上班? 我是不是得了牙髓炎,该怎么治疗? 美的p0故障代码是什么意思? 格力空调显示P0是怎么回事?怎么解决? 格力家用多联中央空调显示P0? 空调P0什么原因 空调出现p6和p0是怎么回事 华凌空调故障代码p0 小孩大脑发育不良。做家长的我该怎么办? 孩子脑部发育不良 我儿子有点脑发育不良可以治吗? 孩子脑白质减少,脑髓鞘发育不良该怎么治疗?家属很着急! 大脑发育不良能治好吗 大脑发育不良 适合叫小名的木字旁的字有那些 临泉皮肤病医院哪里看的好? 安徽省人大医院的皮肤科 经颅多普勒基底动脉流速度略减慢怎么办? 我体检经颅多普勒结果:大脑前动脉血流速度右侧减慢 什么意思啊? 医院检查了个颅内多普勒血流图报告说右侧大脑前动脉,后动脉血流速度减慢,供血不足,说明什么? 安庆有哪些皮肤科医院 彩色经颅多普勒超声检查报告:受检动脉血流速度普遍减慢,偏低。 MED经颅神经递质多谱分析仪检