首先,无论是哪一种方式,作为父工程必须删除src文件和把packing改成pom
若不删除父工程src文件则子工程不能新建java包文件和java类等。
因为父工程下存在一个直系src的java工程了,子工程就不可以新建为java工程。
项目样例:
父工程中包含的标签
父工程作用就是引入项目全部所需要的外部依赖(jar包等),并进行管理
packing
- 父工程的 packaging 标签的文本内容必须设置为 pom。
properties
<properties>
<swagger.version>2.7.0</swagger.version>
</properties>
dependencyManagement标签与dependencies标签
最高级父maven项目需要使用<dependencyManagement>实现对子项目依赖的继承管理。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
若没有使用dependencyManagement标签管理依赖
子模块会无条件继承父工程的所有依赖,导致的问题是,本不需要的继承的依赖也会被继承,这就大大增加了项目模块最终打包的大小,也可能为上线埋下了隐患。 也就是说,父工程管理的是所有项目模块的依赖,而不是某一个项目模块的依赖,所以 某一个项目模块不需要继承父工程中的所有依赖,这就需要子项目模块向父工程声明需要的 依赖即可(声明式依赖)。而此时,父工程实际只需要通过使用dependencyManagement管理依赖的版本号即可。
子工程声明式依赖
由于父工程管理依赖的版本号,那么子模块要想继承依赖,只能通过声明式来添加依赖, 实际上,子模块中的依赖是继承父工程依赖的版本号;如果子模块已定义依赖版本号,那么 以子模块定义的版本号为准。
子工程声明式继承添加父级项目依赖 先声明继承的父工程
<parent>
<artifactId>edu_parent</artifactId>
<groupId>com.qlugcl</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
再声明子工程需要继承使用父工程的依赖
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
|