对于maven,我们经常多使用单继承方式,将父项目中的pom依赖到子项目中
父项目:
<modelVersion>4.0.0</modelVersion>
<groupId>com.shinemo.account</groupId>
<artifactId>account-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.encoding>UTF-8</java.encoding>
<java.version>1.8</java.version>
</properties>
<modules>
<module>account-assembly</module>
<module>account-service</module>
<module>account-web</module>
<module>account-common-util</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
子项目:
<parent>
<groupId>com.shinemo.account</groupId>
<artifactId>account-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>account-common-util</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
这种方式只能是单继承
使用scope=import实现多继承,相当于可以使用多个父项目的pom
父项目:
<modelVersion>4.0.0</modelVersion>
<groupId>com.shinemo.account</groupId>
<artifactId>account-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.encoding>UTF-8</java.encoding>
<java.version>1.8</java.version>
</properties>
<modules>
<module>account-assembly</module>
<module>account-service</module>
<module>account-web</module>
<module>account-common-util</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
子项目:
<groupId>com.shinemo.account</groupId>
<artifactId>account-common-util</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.shinemo.account</groupId>
<artifactId>account-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--此处可以加多个父项目的pom-->
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
子项目中使用dependencyManagement将多个父项目聚合在一起
import的作用:该范围的依赖只在dependencyManagement下才有效果,使用该范围的依赖通常指向一个pom,作用是将目标pom中的dependencyManagement配置导入并合并到当前的POM的dependencyManagement元素中