Maven使用之packaging类型

原文件出处:https://blog.csdn.net/AAzpf/article/details/79650139

tenace作为pom项目已经发布至repo,如果没有指定relativapath。则mvn -X -e clean package可以看到如

项目的打包类型:pom、jar、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,前面已经说过,packaging默认是jar类型。如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。
---------------------
作者:mayunjeffrey
来源:CSDN
原文:https://blog.csdn.net/AAzpf/article/details/79650139
版权声明:本文为博主原创文章,转载请附上博文链接!

其中子模块如果非代码层可以是packaging可以是pom包含多层pom,最终后为jar或war包

如下:

parent里的pom.xml

<project>

<modules>
      <module>abcd-front</module><!-- pom -->
      <module>abcd-common</module><!-- jar -->
      <module>abcd-service</module><!-- pom -->
      <module>abcd-tool</module><!-- pom -->
      <module>abcd-message-queue</module><!-- pom -->
      <module>abcd-web-dependency</module><!-- jar -->
      <module>abcd-monitor</module><!-- war-->
      <module>abcd-zipkin-server</module><!-- war-->
   </modules>
</project>

其中jar作为工具或常量引用,war包作为服务引用

pom类型的包下可以还有jar,war包

如abcd-service下:

<project>
  <packaging>pom</packaging>
   <modules>
      <module>abcd-business</module><!-- pom -->
      <module>abcd-sms</module><!-- pom -->
   </modules>
</project>

如abcd-business下:

<project>
   <packaging>pom</packaging>
   <modules>
      <module>abcd-business-bean</module><!-- jar -->
      <module>abcd-business-api</module><!-- jar -->
      <module>abcd-business-service</module><!-- war-->
   </modules>
</project>

如abcd-business-bean下(其中bean里又可以引用常量的jar):

<project>
    <dependencies>
      <dependency>
         <groupId>com.abcd.shop</groupId>
         <artifactId>abcd-common</artifactId>
         <version>0.0.1-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

如abcd-business-api下(其中把bean,常量的jar引用进来):

 <project>
   <dependencies>
      <dependency>
         <groupId>com.abcd.shop</groupId>
         <artifactId>abcd-business-bean</artifactId>
         <version>0.0.1-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

如abcd-business-service下(其中把api引用进来,相当于把bean和常量包引用进来):

<project>
    <packaging>war</packaging>
    <name>abcd-business-service</name>
<parent>
   <groupId>com.abcd</groupId>
   <artifactId>abcd-business</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</parent>
<dependency>
   <groupId>abcd.ff</groupId>
   <artifactId>abcd-business-api</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependency>
</project>
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值