`
Ydoing
  • 浏览: 106231 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Maven模块聚合与继承

 
阅读更多

聚合

假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时需要用到聚合.

聚合模块
  • package值必须为pom
  • 必须有元素modules
  • module值为相对目录名

新建account-aggregator模块,下面有如下pom文件,其它两个模块保持不变.

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.juvenxu.mvnbook.account</groupId>
    <artifactId>account-aggregator</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Account Aggregator</name>
    <modules>
        <module>account-email</module>
        <module>account-persist</module>
        <module>account-parent</module>
    </modules>
</project>

继承

假如以上两个模块公用一些依赖,你又不想重复这些依赖的配置,可以使用继承.

  • package值必须为pom
  • 子模块必须用元素parent显示声明继承的模块
  • 父模块用元素dependencyManagement管理被继承的依赖.
父模块

配置如下

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.juvenxu.mvnbook.account</groupId>
    <artifactId>account-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Account Parent</name>
    <modules>
        <module>account-email</module>
        <module>account-persist</module>
    </modules>
    <properties>
        <springframework.version>2.5.6</springframework.version>
        <junit.version>4.7</junit.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>    
</project>
子模块
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.juvenxu.mvnbook.account</groupId>
        <artifactId>account-parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>account-persist</artifactId>
    <name>Account Persist</name>

  <properties>
    <dom4j.version>1.6.1</dom4j.version>
  </properties>

    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>${dom4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

    <build>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
    </build>
</project>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.juvenxu.mvnbook.account</groupId>
        <artifactId>account-parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>account-email</artifactId>
    <name>Account Email</name>

    <properties>
        <javax.mail.version>1.4.1</javax.mail.version>
        <greenmail.version>1.3.1b</greenmail.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>        
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>           
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>         
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>         
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>${javax.mail.version}</version>
        </dependency>       
        <dependency>
            <groupId>com.icegreen</groupId>
            <artifactId>greenmail</artifactId>
            <version>${greenmail.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
    </build>

</project>
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    maven依赖+继承+聚合

    本示例将深入探讨Maven中的“依赖”、“继承”和“聚合”这三个核心概念,帮助开发者更好地理解和应用Maven。 首先,我们来讨论"Maven依赖"。在Java开发中,一个项目往往需要引用其他库或者框架来完成特定功能。...

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

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

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

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

    maven继承与聚合代码

    本篇文章将深入探讨Maven的两个重要特性:继承(Inheritance)和聚合(Aggregation),并结合提供的资源《一头扎进Maven3》第五讲源码及文档进行详细解释。 **一、Maven继承** Maven的继承机制允许我们在多个项目...

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

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

    maven聚合和继承

    在Maven中,"聚合"和"继承"是两个重要的特性,它们有助于管理和组织大型的多模块项目。 **一、Maven聚合** Maven聚合(Aggregation)是用来管理多个相关项目的方式,这些项目可能共享一部分代码或者有共同的构建...

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

    这些模块通过Maven的依赖、聚合和继承关系组织在一起,形成一个完整的项目结构。每个模块都有自己的POM.xml文件,定义了其依赖、构建配置和可能的子模块。 总结起来,Maven的依赖管理、聚合、继承和插件运行机制是...

    maven聚合项目

    总结来说,这个"Maven聚合项目"是一个集成了聚合、继承、插件管理和私服使用的实例,展示了如何高效地管理和构建多模块的Java项目。通过这种方式,开发团队可以更有效地协同工作,保证项目的稳定性和一致性。

    maven 模块化项目demo

    Maven的“聚合”(aggregation)和“继承”(inheritance)特性使得管理大型多模块项目变得简单。聚合允许一个父POM包含多个子模块,而继承则允许子POM从父POM中继承配置,减少重复。 在“maven 模块化项目demo”中...

    maven多模块聚合的springboot+duubo+zokeeper+Redis整合demo

    本项目“maven多模块聚合的springboot+duubo+zookeeper+Redis整合demo”就是一个很好的示例,它展示了如何利用Maven进行模块化管理,并将Spring Boot、Dubbo、Zookeeper和Redis这四大核心组件有效地集成在一起。...

    maven多模块项目构建过程

    Maven多模块项目是指由一个父项目(或称为聚合项目)和若干个子项目组成的项目结构。这种结构便于代码组织,提高代码复用性,并能有效管理依赖关系。每个子项目都是独立的Maven项目,可以有自己的pom.xml配置文件,...

    maven聚合工程demo

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

    maven多模块

    4. **聚合(Aggregation)与继承(Inheritance)**:Maven的聚合功能允许在一个POM中管理多个模块,而继承则使得子模块可以共享父模块的配置,如依赖版本、插件配置等。这大大减少了配置的重复性。 5. **构建顺序...

    maven聚合实例

    每个Maven模块都有自己的生命周期,如编译(compile)、测试(test)、打包(package)、集成测试(integration-test)等阶段。通过定义插件和目标,我们可以自定义这些阶段的行为,满足特定的构建需求。 总结来说...

    Maven的聚合(多模块)和Parent继承

    Maven 的聚合(多模块)和 Parent 继承 Maven 中的聚合(多模块)和 Parent 继承是两个独立的概念,但是它们之间存在...继承关系可以使子 POM 继承父 POM 的配置和依赖项,而聚合关系可以将多个模块聚合成一个项目。

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

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

    maven高级(分模块设计、继承、聚合、私服)

    本课程将深入探讨Maven的高级特性,包括分模块设计、继承、聚合以及如何配置私有仓库(私服)。以下是对这些概念的详细解释: 1. **分模块设计**: Maven的模块化设计允许大型项目被划分为多个小的、独立的模块,...

    maven聚合项目模板

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

    Maven的多模块与继承[归纳].pdf

    Maven 的多模块项目和继承机制是解决大型复杂项目结构的有效方式,使得代码组织更有序,依赖管理更高效。 1. Maven 的多模块项目: Maven 的多模块项目允许将大型项目分解成多个相互依赖的小模块,每个模块专注于...

Global site tag (gtag.js) - Google Analytics