原文件出处: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>