先贴一个parent 模块的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.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>myproject-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.2.6.RELEASE</spring.version>
</properties>
<modules>
<module>../example</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency> <!--for org.hamcrest.Matchers-->
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</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.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../myproject-parent/pom.xml</relativePath>
</parent>
<artifactId>peter-user</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
</project>
继承:
1.子模块可以继承parent中所有关于GAV的属性,artifactId除外
2.子模块可以继承parent中properties
3.子模块可以继承parent中的dependencies,比如子模块都不用再添加log4j的依赖了,
但是这样也容易导致子模块中添加了不需要的模块。此时需要使用dependencyManagement,子模块pom.xml中只需要添加GA,这样也省去了很多麻烦。
聚合:
将所有开放的子模块使用modules打包,这样就不需要每个模块单独编译,打包了。
分享到:
相关推荐
在提供的资源《一头扎进Maven3》第五讲源码及文档中,你可以找到实际的项目结构和POM配置示例,这将有助于你更深入理解Maven继承和聚合的工作原理。通过阅读和实践这些示例,你将能更好地掌握如何在实际项目中应用这...
接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承机制允许我们创建一个父`pom.xml`(称为超级POM),在其中定义共用的部分。子模块只需要继承这个父POM,就可以直接使用父POM的...
本示例将深入探讨"Maven聚合与继承"的概念。 **一、Maven聚合(Aggregation)** Maven聚合允许我们将多个独立的Maven项目组织在一起,形成一个单一的构建单元。在我们的示例中,`parent`项目就是一个聚合项目。它...
Maven继承(Inheritance)则是用于复用配置的一种方式,它允许子项目继承父项目的POM配置,包括依赖、插件、构建配置等。这样,当有多个项目共享相同的构建设置时,我们可以把这些共性设置放在父POM中,避免重复编写...
**二、聚合与继承** 聚合和继承是Maven中两个重要的概念。在本项目中,聚合关注的是项目间的组织关系,而继承则关注的是共享配置。 1. **聚合**:在`<modules>`标签下,聚合POM列出所有子项目的相对路径,使得...
本文将深入探讨Maven的聚合与继承特性,并通过实例进行详细解释。 首先,Maven的依赖管理系统允许开发者声明项目所需的库和它们的版本,从而避免了版本冲突和手动管理jar包的问题。在Maven的POM(Project Object ...
### Maven安装配置教程及仓库、POM坐标系、Maven工程、继承与聚合 #### Maven安装与配置 在开始之前,我们首先需要了解Maven是什么。Maven是Apache的一个项目,是一个项目管理和综合工具,主要用来帮助Java项目...
在本文中,我们将深入探讨 Maven 的聚合与继承特性,并结合前后端分离的实践,来创建一个高效的开发环境。Maven 是 Java 开发中广泛使用的构建工具,它通过配置管理依赖关系,简化项目的构建、测试和部署过程。让...
** Maven 聚合工程(Aggregation)与继承(Inheritance)详解 ** 在软件开发中,Maven 是一个强大的项目管理和构建工具,它通过一套规范化的构建过程,帮助开发者管理项目的依赖、构建过程和配置。在 Maven 中,...
在"Maven 依赖,聚合,继承,插件运行应用"这个主题中,我们将深入探讨这四个核心概念。 1. **依赖管理**:Maven依赖是项目中各个模块之间共享代码的关键机制。当你在POM.xml文件中声明一个依赖,Maven会自动下载并...
Maven的依赖管理特性可以帮助我们解决这个问题,通过在父项目的`pom.xml`中定义统一的依赖版本,所有子项目都会继承这些设置。 此外,Maven的生命周期和插件机制也非常重要。每个Maven模块都有自己的生命周期,如...
在聚合项目中,可以定义全局的依赖管理,即在父POM中声明依赖及版本,这样所有子模块都能继承这些依赖,避免了在每个子模块中重复声明。这有助于保持项目的一致性和减少依赖冲突。 3. **依赖约定处理**: Maven...
maven总结笔记-继承和聚合
Maven,作为Java开发中的构建工具,提供了强大的聚合(Aggregation)和继承(Inheritance)特性,使得多模块项目的管理变得高效且有序。本文将深入探讨如何利用这两个特性来创建一个复杂的多模块项目,并通过提供的...
总之,Maven工程的拆分与聚合是大型Java项目中常用的设计模式,它能有效提高代码的组织性和可维护性。通过IDEA这样的强大工具,我们可以方便地实现这一模式,从而更好地管理和开发我们的Java项目。
7. **Maven的继承与聚合** - **继承**:一个父POM可以定义一组通用的配置,子项目通过继承父POM,可以复用这些配置,减少重复工作。 - **聚合**:一个聚合项目可以包含多个子项目,执行`mvn install`时会递归处理...
五、Maven的继承与聚合 Maven支持项目间的继承和聚合。继承允许子项目共享父项目的配置,减少了重复代码。聚合则可以将多个项目组织成一个整体,方便一起构建和部署。 六、Maven profiles profiles是Maven中的环境...
POM还支持继承和聚合,使得大型项目中的模块化管理和版本控制变得简单。 在《Maven实战》中,读者将学习如何设置Maven环境,理解Maven的生命周期和构建过程,包括clean、compile、test、package、install和deploy...