Maven的继承和聚合
Maven继承
指的是,子项目继承父级Maven项目的配置信息(pom.xml)
-
在父级pom.xml中,使用
<dependencies>
标签包裹的依赖,将会无条件传递给子级,与依赖范围无关<!-- 父级pom.xml,三种依赖都将会传递给子级 --> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.10.2</version> <scope>test</scope> <!-- 与依赖范围无关 --> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> <!-- 与依赖范围无关 --> </dependency> </dependencies>
-
在父级pom.xml中,使用
<dependencyManagement>
标签包裹的依赖,默认不会传递给子级,需要子级手动引入相关依赖,父级只做依赖的版本管理<!-- 父级pom.xml,将所有依赖放入dependencyManagement中,只是用于版本管理,默认不会将这些依赖传递给子级 --> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.10.2</version> <scope>test</scope> <!-- 与依赖范围无关 --> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> <!-- 与依赖范围无关 --> </dependency> </dependencies> </depedencyManagement>
<!-- 在子级pom.xml中,需手动引入想要的依赖,此时无需指明version,会读取父级对应依赖的version --> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> </dependencies>
Maven聚合
指的是,当对父项目进行构建等操作时,自动会构建其内的所有子项目
<!-- 在父级pom.xml中声明modules标签即可,module存放的是子工程的路径 -->
<modules>
<module>maven_child1</module>
<module>../maven_child2</module>
</modules>