模块的聚合
聚合的好处:
统一对各个模块的编译,测试,打包,安装,发布操作,不用每个模块都单独编译,测试等
集中管理,批量执行Maven的命令(注:命令即插件,执行一个命令等同于运行一个插件!)
用法:
新建一个Maven项目,修改POM,将package属性改为pom
使用Module标签引入其它模块
由于该聚合模块是新建的Maven项目,在指定路径时需回退到上一级目录,才能定位到其它模块。
<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.gc.user</groupId> <artifactId>user-aggregation</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 此处,类型为pom --> <packaging>pom</packaging> <!-- 将其它模块放到一起,集中执行命令 --> <modules> <module>../user-core</module> <module>../user-dao</module> </modules> </project>
====================================================================
模块的继承
引入继承带来的好处:
将各个模块中相同的配置定义到一个文件中,由其它模块来继承
提高pom文件配置的重用性,而且可以单点维护---单一职责原则!
用法:
新建一个Maven项目,将其artifactId设置为user-parent
修改package属性为pom
parent模块
<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.gc.user</groupId> <artifactId>user-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>user-parent</name> <url>http://maven.apache.org</url> <!-- 常量的定义,子模块中通过${}就能使用此处定义的常量:单点维护 --> <properties> <project.version>0.0.1-SNAPSHOT</project.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <my.jar.source>d:/</my.jar.source> <junit.version>4.10</junit.version> </properties> <!-- 如果不通过 dependencyManagement管理依赖,虽然子模块能够继承这些依赖, 但是会继承所有parent中的依赖!应该根据各个子模块的需求,灵活继承依赖, 所以使用dependencyManagement来管理,这样子模块声明了那些依赖,就继承哪些依赖 子类没有声明的依赖,就不会继承下去。 --> <dependencyManagement> <dependencies> <!-- 子模块的依赖 --> <dependency> <groupId>com.gc.user</groupId> <artifactId>user-core</artifactId> <version>${project.version}</version> </dependency> <!-- 子模块的依赖 --> <dependency> <groupId>com.gc.user</groupId> <artifactId>user-dao</artifactId> <version>${project.version}</version> </dependency> <!-- 其它依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.6.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api</artifactId> <version>2.5-6.0.0</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> </project>
子模块user-core模块继承parent模块
<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.gc.user</groupId> <artifactId>user-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>user-core</artifactId> <!-- groupId和version将从parent继承,无需定义 --> <packaging>jar</packaging> <!-- properties将从parent继承,无需定义 --> <name>user-core</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <!-- version无需定义,会从parent继承下来 --> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> </dependencies> </project>
子模块user-dao模块继承parent模块
<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.gc.user</groupId> <artifactId>user-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>user-dao</artifactId> <packaging>jar</packaging> <name>user-dao</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- 引入user-core,将会发生传递性依赖:user-core中的依赖是否会导入到本模块中,还要根据scope决定! --> <dependency> <groupId>com.gc.user</groupId> <artifactId>user-core</artifactId> <exclusions> <!-- 排除user-core模块中关于log4j的依赖 --> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
====================================================================
将聚合与继承集中到parent模块的POM中
user-parent模块,既提供聚合又提供继承
<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.gc.user</groupId> <artifactId>user-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!-- 将其它模块放到一起,集中执行命令 --> <modules> <module>../user-core</module> <module>../user-dao</module> </modules> <name>user-parent</name> <url>http://maven.apache.org</url> <!-- 常量的定义,子模块中通过${}就能使用此处定义的常量:单点维护 --> <properties> <project.version>0.0.1-SNAPSHOT</project.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <my.jar.source>d:/</my.jar.source> <junit.version>4.10</junit.version> </properties> <!-- 如果不通过 dependencyManagement管理依赖,虽然子模块能够继承这些依赖, 但是会继承所有parent中的依赖!应该根据各个子模块的需求,灵活继承依赖, 所以使用dependencyManagement来管理,这样子模块声明了那些依赖,就继承哪些依赖 子类没有声明的依赖,就不会继承下去。 --> <dependencyManagement> <dependencies> <!-- 子模块的依赖 --> <dependency> <groupId>com.gc.user</groupId> <artifactId>user-core</artifactId> <version>${project.version}</version> </dependency> <!-- 子模块的依赖 --> <dependency> <groupId>com.gc.user</groupId> <artifactId>user-dao</artifactId> <version>${project.version}</version> </dependency> <!-- 其它依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.6.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>servlet-api</artifactId> <version>2.5-6.0.0</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> </project>
相关推荐
一个简单的maven聚合,继承示例。parent为父目录,account-email,account-persist为子项目,继承了parent的pom.xml文件
这是一个maven依赖+继承+聚合的小例子,用来参考和学习maven
该资源包含了一个maven聚合和继承的简单demo,可以参考博客http://blog.csdn.net/mockingbirds/article/details/47374127
Maven聚合和继承 #资源达人分享计划 # 技术文档
Maven聚合工程源码,工作空间压缩包
这里是maven继承与聚合代码。
spring boot项目,使用了maven聚合,将实体类和和工具类抽出去,集成了mybatis,freemark,mysql,logback等技术
maven项目,主要是一些配置,如聚合和继承以及插件.私服等,项目按模块区分,多个子项目继承parent
基础maven聚合工程的web层Excel导入导出 ,第一次做如有bug清见谅
在javaweb高速发展的今天,我们软件设计人员往往会用很多种...Maven有很好的依赖管理系统(Dependency Management System)和项目生命周期的管理(Project Leftcycle),而其中的依赖管理是本文阐述和做出实例的重点。
利用maven构建项目,ssh简易框架,利用了聚合和继承
1.maven聚合工程,父工程统一管理依赖版本 2.分模块设计,模块之间通过jar包的方式互相引用 3.基于springboot框架 4.整合了Lombok、Spring MVC、Druid、Mybatis、MySQL
ssm+maven聚合工程框架的搭建,下载下来导入即可使用。
maven学习笔记,maven构建的聚合项目,使用springmvc,没做持久层。
Maven聚合学习Demo.zip
maven module 聚合 实例,子项目之间的调用实现,demo-top 是父项目,demo-one 是子项目,jar类型,提供接口,demo-two 调用demo-one,实现接口,是web类型
用于对Maven聚合继承项目的版本号进行便捷变更的工具 在使用RPC框架的微服务架构中,为了让服务消费者实现像调用本地方法一样的透明的通过网络进行RPC,服务提供者一般会提供立面jar用于服务消费者集成并通过动态...
springboot+mybaties+maven聚合工程.zip springboot+mybaties+maven聚合工程.zip
本文是开发笔记和教程,主要说明了使用springboot从0开始,完成了创建maven聚合工程,搭建使用了springboot modules工程。 同时,项目搭建的源码开源分享。此文是springboot初学者,搭建多模块项目的推荐文章。
maven 依赖,聚合,继承,插件运行,已经说明的简单小案例