项目中一般使用maven进行模块管理,每个模块下都对应有各自模块自己的pom文件,pom文件中维护了各模块之间的依赖和继承关系,结构更清晰,达成项目模块化。
项目模块化的好处是:1、可以将通用的部分抽离出来,方便重用;2、修改一部分代码不再是build整个项目,缩短了build时间;
使用maven进行模块划分管理,一般都会有一个父级项目,所有的父级项目都有一个的pom文件的
pom文件的几个必须配置的属性:
1、packing打包类型
可选值为:pom、jar、war等类型;
如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。
默认是jar类型,如果不作配置,maven会将该项目打成jar包;
所有的父级项目 packing属性 都为pom;
子类项目的packaging值只能是war或者jar
2、GAV(groupId、artifactId、version)
对于各个子项目,需要在其对应的pom文件开头申明对父级项目的引用,通过GAV实现。
对于子项目自己的配置,GV如果不配置,则会从父级项目的配置继承过来。
3、modules
通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。
4、dependencies
子模块可通过此标签来添加自己的依赖
5、relativePath(参考:http://bcxw.net/article/621.html)
搭建maven项目,子模块指定父模块试,经常会在parent下面出现relativePath类似下面:
<parent>
<groupId>net.itxw</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
这个<parent>下面的<relativePath>属性,就是parent的路径,具体来说就是你引用的是这个parent项目;
默认不设置<relativePath/>,那默认值就是 ../pom.xml,相当于<relativePath>../pom.xml</relativePath>;
设置指定路径:<relativePath>路径/pom.xml</relativePath>,则会从指定的本地路径中获取parent的pom。
6、repositories(https://www.cnblogs.com/gengaixue/p/6933773.html)
用来配置maven项目的远程仓库。示例如下:
<!--配置maven项目的远程仓库。-->
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
按照上面配置是实现了配置maven项目的远程仓库,但是,这样的配置,如果我们创建一个项目,就需要配置一次,很麻烦。可以将上面的远程仓库配置在maven的setting.xml里面.这样就可以实现只配置一次。
7、pluginRepository
用来配置maven插件的远程仓库。示例如下:
<!--配置maven插件的远程仓库-->
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
8、build属性
参考:https://blog.csdn.net/xiaoyao2246/article/details/88355463
9、dependencyManagement 和 dependencies
参考:https://blog.csdn.net/inflaRunAs/article/details/103542437
参考:https://www.cnblogs.com/hjw-zq/p/11708799.html