Maven继承
概念
Maven继承主要用于管理项目的公共配置,如依赖、插件等。通过继承,子项目可以复用父项目的配置,减少重复代码,提高项目的可维护性。一个父项目可以有多个子项目,子项目可以继承父项目的 groupId
、version
、依赖、插件配置等信息。
示例代码
父项目 parent-project
首先,创建一个 Maven 项目作为父项目,其 pom.xml
配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><!-- 公共依赖 --><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies><!-- 公共插件 --><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>
注意,父项目的 packaging
标签值为 pom
,表示这是一个项目对象模型,不生成具体的构件。
子项目 child-project
创建一个子项目,其 pom.xml
配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 继承父项目 --><parent><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>child-project</artifactId><!-- 可以添加额外的依赖 --><dependencies><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency></dependencies>
</project>
子项目通过 <parent>
标签指定父项目的 groupId
、artifactId
和 version
,从而继承父项目的配置。
Maven 聚合
概念
Maven 聚合用于将多个相关的项目作为一个整体进行构建。通过聚合,开发者可以一次性构建多个项目,提高开发效率。聚合项目的 pom.xml
会列出所有要聚合的子项目,Maven 会按照指定的顺序依次构建这些子项目。
示例代码
聚合项目 aggregation-project
创建一个 Maven 项目作为聚合项目,其 pom.xml
配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>aggregation-project</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><!-- 列出要聚合的子项目 --><modules><module>module1</module><module>module2</module></modules>
</project>
注意,聚合项目的 packaging
标签值也为 pom
。<modules>
标签列出了要聚合的子项目,子项目的名称是相对于聚合项目的目录名。
子项目 module1
创建子项目 module1
,其 pom.xml
配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>module1</artifactId><version>1.0-SNAPSHOT</version>
</project>
子项目 module2
创建子项目 module2
,其 pom.xml
配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>module2</artifactId><version>1.0-SNAPSHOT</version>
</project>
总结
Maven 继承主要用于代码复用,减少重复配置;Maven 聚合主要用于提高构建效率,一次性构建多个项目。在实际项目中,两者可以结合使用,以更好地管理项目结构和配置。