我们新建一个Maven项目时,通常会默认打包方式。例如 <packaging>pom</packaging> ,它们到底是什么意思呢?
打包类型有pom、jar、war三种。
打包类型 | 说明 |
pom | 父级项目的打包类型 |
jar | 默认类型,如果没写packaging标签,则默认打成jar包(内部调用或作为服务) |
war | Web应用程序 |
pom工程
用在父级工程或聚合工程中。用来做jar包的版本控制。必须指明这个聚合工程的打包方式为pom
现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
分别对子项目打Jar包的时候会导入项目的jar包。看起来就像本地引用一样。
Packing = pom,
war工程
将会打包成war,发布在服务器上的工程。如网站或服务。在SpringBoot 项目中,只要我们在依赖中添加了web的启动器,我们就不需要添加打包方式了,maven会自动帮助我们 识别这个项目为war工程。不是springBoot项目的话,则需要指明这个项目为一个web工程。
jar工程
将会打包成jar用作jar包使用。在项目中,不指明的话,默认的就是打包成jar工程,我们也可以添加指明打包方式为jar。