• Maven使用之packaging类型


    Maven使用之packaging类型

    pom

    1、父项目中的packaging

    在父级项目中的pom.xml文件使用的packaging配置一定为pom父级的pom文件只作项目的子模块的整合,在maven install时不会生成jar/war压缩包。

    可以通过标签来整合子模块的编译顺序(Maven引入依赖使用最短路径原则,例如a<–b<–c1.0 ,d<–e<–f<–c1.1,由于路径最短,最终引入的为c1.0;但路径长度相同时,则会引入先申明的依赖)。因此尽量将更加底层的service放在更先的位置优先加载依赖较为合适。
    **可以将一些子项目中共用的依赖或将其版本统一写到父级配置中,以便统一管理。**groupId, artifactId, version能直接从父级继承,减少子项目的pom配置。

    如果没有将packing 指定为pom ,那么子模块之间将无法正常的进行依赖传递。我们执行的maven命令的时候将首先对父项目执行,而后当 父项目 的packing 类型为 pom 时,将对所有的子模块执行同样的命令,否则将无法执行同样的命令,那么依赖的传递将无法由maven 编译或者打包命令 得以执行。

    子模块中需要引入父模块的gav:

    
    		...
        ...
        ...
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、子项目中的packaging

    jar
    Jar包是最为常见的打包方式,当pom文件中没有设置packaging参数时,默认使用jar方式打包。
    这种打包方式意味着在maven build时会将这个项目中的所有java文件都进行编译形成.class文件,且按照原来的java文件层级结构放置,最终压缩为一个jar文件。
    当我们使用mvn install命令的时候,能够发现在项目中与src文件夹同级新生成了一个target文件夹,这个文件夹内的classes文件夹即为刚才提到的编译后形成的文件夹。

    war
    war包与jar包非常相似,同样是编译后的.class文件按层级结构形成文件树后打包形成的压缩包。不同的是,它会将项目中依赖的所有jar包都放在WEB-INF/lib这个文件夹下。
    war包非常适合部署时使用,不再需要下载其他的依赖包,能够使用户拿到war包直接使用,因此它经常使用于微服务项目群中的入口项目的pom配置中

    3、pom、jar、war的区别

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

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

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

    即:

    项目的打包类型:pom、jar、war

    packing默认是jar类型,

    pom ---------> 父类型都为pom类型

    jar ---------> 内部调用或者是作服务使用

    war ---------> 需要部署的项目

  • 相关阅读:
    去中心化NFT交易协议将击败OpenSea
    MyBatis源码学习
    java计算机毕业设计基于springboo+vue的医院挂号体检预约系统
    Linux开发工具(3)——gcc/g++
    初识 Flutter 的绘图组件 — CustomPaint
    使用阿里云服务器三分钟搭建网站
    java毕业设计人人小说系统(附源码、数据库)
    开源模型应用落地-工具使用篇-向量数据库(三)
    Spring Boot最核心的25个注解
    【GitHub】小技巧
  • 原文地址:https://blog.csdn.net/weixin_44040023/article/details/126969384