maven 继承关系和聚合

maven继承管理 让版本的管理只在一个地方改变

modules用于聚合,把执行的项目都放到同一的地方用module包括,可以省去一个个项目去mvn install,这样可以所有项目一次聚合 mvn install

传递性依赖原则:

A-->B
A-->C

1.路径最近者优先
2.路径相同,第一声明者优先

注意:
1.dependencyManagement中定义的依赖子module不会共享
2.dependencies中定义的依赖子module可以共享

dependencyManagement的使用 就是方便管理版本,子项目中要引入group id和atifact id

在parent项目的pom.xml配置

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4
 5   <groupId>cn.itcast.maven</groupId>
 6   <artifactId>Parent</artifactId>
 7   <version>0.0.1-SNAPSHOT</version>
 8   <packaging>pom</packaging>
 9
10   <name>Parent</name>
11   <url>http://maven.apache.org</url>
12 <!--聚合-->
13   <modules>
14       <module>../Hello</module>
15       <module>../HelloFriend</module>
16       <module>../MakeFriends</module>
17       <module>../Web</module>
18 </modules>
19
20   <properties>
21     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22   </properties>
23
24 <!--定义了依赖的关系,让其他项目继承这些包,不用写版本,同一控制了-->
25   <dependencyManagement>
26
27
28   <dependencies>
29     <dependency>
30       <groupId>junit</groupId>
31       <artifactId>junit</artifactId>
32       <version>4.9</version>
33       <scope>test</scope>
34     </dependency>
35     <dependency>
36             <groupId>cn.itcast.maven</groupId>
37             <artifactId>Hello</artifactId>
38             <version>0.0.1-SNAPSHOT</version>
39             <scope>compile</scope>
40         </dependency>
41     <dependency>
42       <groupId>cn.itcast.maven</groupId>
43       <artifactId>HelloFriend</artifactId>
44       <version>0.0.1-SNAPSHOT</version>
45     </dependency>
46     <dependency>
47       <groupId>cn.itcast.maven</groupId>
48       <artifactId>MakeFriends</artifactId>
49       <version>0.0.1-SNAPSHOT</version>
50     </dependency>
51   </dependencies>
52   </dependencyManagement>
53
54  <distributionManagement>
55     <repository>
56         <id>releases</id>
57         <name>Internal Releases</name>
58         <url>http://localhost:8080/nexus-2.1.2/content/repositories/releases/</url>
59     </repository>
60     <snapshotRepository>
61         <id>snapshots</id>
62         <name>Internal Snapshots</name>
63         <url>http://localhost:8080/nexus-2.1.2/content/repositories/snapshots/</url>
64     </snapshotRepository>
65   </distributionManagement>
66
67
68 </project>

Hello.pom

 1 <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">
 2   <modelVersion>4.0.0</modelVersion>
 3
 4   <artifactId>Hello</artifactId>
 5
 6
 7   <parent>
 8           <groupId>cn.itcast.maven</groupId>
 9      <artifactId>Parent</artifactId>
10       <version>0.0.1-SNAPSHOT</version>
11         <relativePath>../Parent/pom.xml</relativePath>
12 </parent>
13 <dependencies>
14 <!--不用写版本了  parent那里同一控制了-->
15     <dependency>
16             <groupId>junit</groupId>
17             <artifactId>junit</artifactId>
18         </dependency>
19 </dependencies>
20
21 </project>

HelloFriend  pom.xml

 1 <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">
 2   <modelVersion>4.0.0</modelVersion>
 3
 4   <artifactId>HelloFriend</artifactId>
 5
 6   <name>HelloFriend</name>
 7
 8     <parent>
 9           <groupId>cn.itcast.maven</groupId>
10      <artifactId>Parent</artifactId>
11       <version>0.0.1-SNAPSHOT</version>
12         <relativePath>../Parent/pom.xml</relativePath>
13   </parent>
14   <dependencies>
15     <dependency>
16       <groupId>junit</groupId>
17       <artifactId>junit</artifactId>
18     </dependency>
19     <dependency>
20             <groupId>cn.itcast.maven</groupId>
21             <artifactId>Hello</artifactId>
22     </dependency>
23     </dependencies>
24 </project>

maven 继承关系和聚合

时间: 2024-10-28 19:26:27

maven 继承关系和聚合的相关文章

maven 继承 聚合

Maven聚合与继承 一.聚合 为了能够使用一条命令就能构建 account-email和 account-persist两个模块,我们需要建立一个额外的名为 account-aggregator的模块,然后通过该模块构建整个项目的所有模块. account-aggregator本身也是个 Maven项目,它的 POM如下 Xml代码   <project> <modelVersion>4.0.0</modelVersion> <groupId>com.ju

Maven详解 之 聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

011.maven 继承与聚合

聚合:对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在: 继承:对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁: 在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便. 链接:https://www.cnblogs.com/sxpy-lj/p/7251418.html 一.继承 为了避免重复.通过继承拥有Parent项目中的配置. https:

Maven详解之聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

对象关系分析(非继承关系)

现实环境存在各种对象关系,可以使用特殊的关系类型描述词来形容这些关系. 例如: 1. 方形是属于形状的一种,可以用"is-a"来描述方形与形状的关系. 2. 汽车都有方向盘,可以用"has-a"来描述汽车与方向盘的关系. 3. 程序员使用键盘编辑代码,可以用"uses-a"来描述程序员与键盘的关系. 4. 花朵依赖蜜蜂传播花粉,可以使用"depends-on"来描述花朵与蜜蜂的关系. 5. 学生是一个班级的成员,可以使用&qu

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等 http://doc.qt.io/qt-5/qobject.html http://doc.qt.io/qt-5/qmetaobject.html 我感觉Qt的出现,除了提供GUI以外,主要就是提

EF-CodeFirst 继承关系TPH、TPT、TPC

继承关系 面向对象的三大特征之一:继承 ,在开发中起到了重要的作用.我们的实体本身也是类,继承自然是没有问题.下面开始分析 EF里的继承映射关系TPH.TPT.TPC 现在我们有这样一个需求,用户里要有一批超级用户,他们有着与生具来的优越.可以体验到更高级的服务.但是超级用户也是用户,可以去继承我们的普通用户类 (其实个人感觉不是很合理,因为我们有UserRole表,给一个超级用户的角色就可以了.这里仅做演示) /// <summary> /// 超级用户 /// </summary&g

Hibernate之jpa实体映射的三种继承关系

在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承策略 单表继承策略,父类实体和子类实体共用一张数据库表,在表中通过一列辨别字段来区别不同类别的实体.具体做法如下: a.在父类实体的@Entity注解下添加如下的注解: @Inheritance(Strategy=InheritanceType.SINGLE_TABLE)@Discriminator

tiny_cnn代码详解(3)——层间继承关系

在上一篇博文中我们顺利将tiny_cnn的程序调试通过,在这篇博文中我们尝试从整体角度给出对tiny_cnn这个深度学习框架的解读,重点论述一下其各个层直接类封装的继承关系. 一.卷积神经网络快速入门 tiny_cnn作为卷积神经网络的一种实现形式,在探讨其框架结构之前,首先需要简要介绍一些卷积神经网络相关的知识.首先,给出经典卷积神经网络的网络结构: 这个是经典的LeNet-5的网络结构图,五层网络.最早用于支票上的手写数字识别,也是最早的商业化的深度学习模型.从上图中可以看出,卷积神经网络主