【Maven】maven项目的三种打包方式jar,pom,war

【Maven】maven项目的三种打包方式jar,pom,war

  • Maven项目的打包类型有三种分别是:pom、jar、war。

  • jar:默认的打包方式,打包成jar用作jar包使用。打包成jar用作jar包使用。
  • war:将会打包成war,发布在服务器上,如网站或服务。一般是java web项目打包。
  • pom:用在父级工程或聚合工程中,用来做jar包的版本控制,必须指明这个聚合工程的打包方式为pom。

补充一下,jdk9 后还可以打包 jmod(Java 模块化),厉害的是这个通过 jlink 命令,可以直接将 jmod 打包为对应环境的可执行的程序,告别了让用户安装 jdk 的步骤,现在也有对应的 maven 插件了。


  • pom:打出来可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。

  • jar包:通常是开发时要引用通用类,打成jar包便于存放管理。当你使用某些功能时就需要这些jar包的支持,需要导入jar包。

  • war包:是做好一个web网站后,打成war包部署到服务器。目的是节省资源,提供效率。


项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件维护了各个模块之间的依赖和继承关系。项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;此外各模块都有自己的pom文件,结构更清晰。

使用maven进行模块划分管理,一般都会有一个父级项目,pom文件出了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packaging打包类型,所有的父级项目的packaging都为pom,packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

而对于各个子项目,需要在其对应的pom文件开头声明对父级项目的引用,通过GAV实现。对于子项目中自己的GAV配置,GV如果不配置,则会从父类项目的配置继承过来。子模块可以通过dependencies标签来添加自己的依赖,此外子类项目的packaging值只能是war或jar。如果是需要部署的项目,一般是包含controller的module,需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打成jar包,是服务于war包的, 位于war包中的lib文件夹下。

发布了476 篇原创文章 · 获赞 152 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_41879343/article/details/104870854