`

Maven 中的继承与聚合

 
阅读更多
先贴一个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打包,这样就不需要每个模块单独编译,打包了。
分享到:
评论

相关推荐

    maven继承与聚合代码

    在提供的资源《一头扎进Maven3》第五讲源码及文档中,你可以找到实际的项目结构和POM配置示例,这将有助于你更深入理解Maven继承和聚合的工作原理。通过阅读和实践这些示例,你将能更好地掌握如何在实际项目中应用这...

    maven依赖+继承+聚合

    接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承机制允许我们创建一个父`pom.xml`(称为超级POM),在其中定义共用的部分。子模块只需要继承这个父POM,就可以直接使用父POM的...

    maven聚合与继承配置

    本示例将深入探讨"Maven聚合与继承"的概念。 **一、Maven聚合(Aggregation)** Maven聚合允许我们将多个独立的Maven项目组织在一起,形成一个单一的构建单元。在我们的示例中,`parent`项目就是一个聚合项目。它...

    maven聚合和继承

    Maven继承(Inheritance)则是用于复用配置的一种方式,它允许子项目继承父项目的POM配置,包括依赖、插件、构建配置等。这样,当有多个项目共享相同的构建设置时,我们可以把这些共性设置放在父POM中,避免重复编写...

    maven聚合项目

    **二、聚合与继承** 聚合和继承是Maven中两个重要的概念。在本项目中,聚合关注的是项目间的组织关系,而继承则关注的是共享配置。 1. **聚合**:在`&lt;modules&gt;`标签下,聚合POM列出所有子项目的相对路径,使得...

    Maven聚合与继承实例详解.docx

    本文将深入探讨Maven的聚合与继承特性,并通过实例进行详细解释。 首先,Maven的依赖管理系统允许开发者声明项目所需的库和它们的版本,从而避免了版本冲突和手动管理jar包的问题。在Maven的POM(Project Object ...

    Maven安装配置教程及仓库、POM坐标系、Maven工程、继承与聚合

    ### Maven安装配置教程及仓库、POM坐标系、Maven工程、继承与聚合 #### Maven安装与配置 在开始之前,我们首先需要了解Maven是什么。Maven是Apache的一个项目,是一个项目管理和综合工具,主要用来帮助Java项目...

    Maven的聚合与继承DEMO(以及前后端分离)

    在本文中,我们将深入探讨 Maven 的聚合与继承特性,并结合前后端分离的实践,来创建一个高效的开发环境。Maven 是 Java 开发中广泛使用的构建工具,它通过配置管理依赖关系,简化项目的构建、测试和部署过程。让...

    maven聚合工程demo

    ** Maven 聚合工程(Aggregation)与继承(Inheritance)详解 ** 在软件开发中,Maven 是一个强大的项目管理和构建工具,它通过一套规范化的构建过程,帮助开发者管理项目的依赖、构建过程和配置。在 Maven 中,...

    maven 依赖,聚合,继承,插件运行应用

    在"Maven 依赖,聚合,继承,插件运行应用"这个主题中,我们将深入探讨这四个核心概念。 1. **依赖管理**:Maven依赖是项目中各个模块之间共享代码的关键机制。当你在POM.xml文件中声明一个依赖,Maven会自动下载并...

    maven聚合实例

    Maven的依赖管理特性可以帮助我们解决这个问题,通过在父项目的`pom.xml`中定义统一的依赖版本,所有子项目都会继承这些设置。 此外,Maven的生命周期和插件机制也非常重要。每个Maven模块都有自己的生命周期,如...

    maven聚合项目模板

    在聚合项目中,可以定义全局的依赖管理,即在父POM中声明依赖及版本,这样所有子模块都能继承这些依赖,避免了在每个子模块中重复声明。这有助于保持项目的一致性和减少依赖冲突。 3. **依赖约定处理**: Maven...

    maven总结笔记-继承和聚合

    maven总结笔记-继承和聚合

    通过Maven的聚合和继承特性创建多模块项目示例

    Maven,作为Java开发中的构建工具,提供了强大的聚合(Aggregation)和继承(Inheritance)特性,使得多模块项目的管理变得高效且有序。本文将深入探讨如何利用这两个特性来创建一个复杂的多模块项目,并通过提供的...

    2018-05-22-Maven工程的拆分与聚合.docx

    总之,Maven工程的拆分与聚合是大型Java项目中常用的设计模式,它能有效提高代码的组织性和可维护性。通过IDEA这样的强大工具,我们可以方便地实现这一模式,从而更好地管理和开发我们的Java项目。

    李兴华maven配置与使用

    7. **Maven的继承与聚合** - **继承**:一个父POM可以定义一组通用的配置,子项目通过继承父POM,可以复用这些配置,减少重复工作。 - **聚合**:一个聚合项目可以包含多个子项目,执行`mvn install`时会递归处理...

    尚硅谷Maven课程笔记代码资源

    五、Maven的继承与聚合 Maven支持项目间的继承和聚合。继承允许子项目共享父项目的配置,减少了重复代码。聚合则可以将多个项目组织成一个整体,方便一起构建和部署。 六、Maven profiles profiles是Maven中的环境...

    java maven 聚合项目 分模块 socket 双向通信实例demo

    在Java开发中,Maven聚合项目(Aggregator Project)是一种管理多模块项目的方式,它允许开发者在一个父项目中集合并构建多个子项目。这样的结构有助于代码的组织和依赖管理,特别是当项目涉及到多个独立但相互关联...

Global site tag (gtag.js) - Google Analytics