正文
模块二
模块三
例如:对项目的Hello、HelloFriend、MakeFriends这三个模块进行聚合
../Hello ../HelloFriend ../MakeFriends
其中module的路径为相对路径。
七、继承
继承为了消除重复,我们把很多相同的配置提取出来,例如:grouptId,version等
7.1、继承配置代码
1 2 me.gacl.maven 3 ParentProject 4 0.0.1-SNAPSHOT 5 …/ParentProject/pom.xml 6
7.2、继承代码中定义属性
继承代码过程中,可以定义属性,例如:
1 2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 3 <junit.version>4.9</junit.version> 4 <maven.version>0.0.1-SNAPSHOT</maven.version> 5
访问属性的方式为${junit.version},例如:
1 2 junit 3 junit 4 ${junit.version} 5 test 6
7.3、父模块用dependencyManagement进行管理
1 2 3 4 junit 5 junit 6 j u n i t . v e r s i o n < / v e r s i o n > 7 < s c o p e > t e s t < / s c o p e > 8 < / d e p e n d e n c y > 9 < d e p e n d e n c y > 10 < g r o u p I d > c n . i t c a s t . m a v e n < / g r o u p I d > 11 < a r t i f a c t I d > H e l l o F r i e n d < / a r t i f a c t I d > 12 < v e r s i o n > {junit.version}</version> 7 <scope>test</scope> 8 </dependency> 9 <dependency> 10 <groupId>cn.itcast.maven</groupId> 11 <artifactId>HelloFriend</artifactId> 12 <version>junit.version</version>7<scope>test</scope>8</dependency>9<dependency>10<groupId>cn.itcast.maven</groupId>11<artifactId>HelloFriend</artifactId>12<version>{maven.version} 13 jar 14 compile 15 16 17
这样的好处是子模块可以有选择行的继承,而不需要全部继承。
八、聚合与继承的关系
聚合主要为了快速构建项目,继承主要为了消除重复
九、聚合与继承实战演练
创建四个Maven项目,如下图所示:
这四个项目放在同一个目录下,方便后面进行聚合和继承
Parent项目是其它三个项目的父项目,主要是用来配置一些公共的配置,其它三个项目再通过继承的方式拥有Parent项目中的配置,首先配置Parent项目的pom.xml,添加对项目的Hello、HelloFriend、MakeFriends这三个模块进行聚合以及jar包依赖,pom.xml的配置信息如下:
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 4.0.0 4 5 me.gacl.maven 6 Parent 7 0.0.1-SNAPSHOT 8 pom 9 10 Parent 11 http://maven.apache.org 12 13 14 15 …/Hello 16 …/HelloFriend 17 …/MakeFriends 18 19 20 21 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <junit.version>4.9</junit.version> 24 <maven.version>0.0.1-SNAPSHOT</maven.version> 25 26 27 28 29 30 31 32 junit 33 junit 34 35 j u n i t . v e r s i o n < / v e r s i o n > 36 < s c o p e > t e s t < / s c o p e > 37 < / d e p e n d e n c y > 38 < d e p e n d e n c y > 39 < g r o u p I d > m e . g a c l . m a v e n < / g r o u p I d > 40 < a r t i f a c t I d > H e l l o < / a r t i f a c t I d > 41 < ! − − 访问 m a v e n . v e r s i o n 属性 − − > 42 < v e r s i o n > {junit.version}</version> 36 <scope>test</scope> 37 </dependency> 38 <dependency> 39 <groupId>me.gacl.maven</groupId> 40 <artifactId>Hello</artifactId> 41 <!-- 访问maven.version属性 --> 42 <version>junit.version</version>36<scope>test</scope>37</dependency>38<dependency>39<groupId>me.gacl.maven</groupId>40<artifactId>Hello</artifactId>41<!−−访问maven.version属性−−>42<version>{maven.version} 43 compile 44 45 46 me.gacl.maven 47 HelloFriend 48 49 ${maven.version} 50 51 52 53 在Hello项目的pom.xml中继承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 4 4.0.0 5 Hello 6 7 8 9 me.gacl.maven 10 Parent 11 0.0.1-SNAPSHOT 12 13 …/Parent/pom.xml 14 15 16 17 18 junit 19 junit 20 21 22 在HelloFriend项目的pom.xml中继承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 4.0.0 4 HelloFriend 5 HelloFriend 6 7 8 9 me.gacl.maven 10 Parent 11 0.0.1-SNAPSHOT 12 …/Parent/pom.xml 13 14 15 16 18 junit 19 junit 20 21 25 26 me.gacl.maven 27 Hello 28 29 30 在MakeFriends项目的pom.xml中继承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 4.0.0 4 MakeFriends 5 6 7 me.gacl.maven 8 Parent 9 0.0.1-SNAPSHOT 10 …/Parent/pom.xml 11 12 13 14 16 junit 17 junit 18 19 20 24 me.gacl.maven 25 HelloFriend 26 27 28
以上的四个项目的pom.xml经过这样的配置之后,就完成了在Parent项目中聚合Hello、HelloFriend、MakeFriends这三个子项目(子模块),而Hello、HelloFriend、MakeFriends这三个子项目(子模块)也继承了Parent项目中的公共配置,这样就可以使用Maven一次性构建所有的项目了,如下图所示:
选中Parent项目的pom.xml文件→【Run As】→【Maven install】,这样Maven就会一次性同时构建Parent、Hello、HelloFriend、MakeFriends这四个项目,如下图所示:
学习分享,共勉
题外话,毕竟我工作多年,深知技术改革和创新的方向,Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心