Maven实战 Item4 -- Maven核心概念_maven junit version(1)

简介: Maven实战 Item4 -- Maven核心概念_maven junit version(1)

正文

模块二

模块三

例如:对项目的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以其美观、快速、高效、开放等优势迅速俘获人心


相关文章
|
4月前
|
XML 前端开发 Java
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
|
4月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
4月前
|
Java 测试技术 Maven
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
单元测试问题之在Maven项目中引入JUnit 5和Mockito的依赖如何解决
258 1
|
4月前
|
前端开发 Java 测试技术
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
|
6月前
|
存储 搜索推荐 Java
rodert教你学Maven-实战这一篇就够了(上)
rodert教你学Maven-实战这一篇就够了
55 1
 rodert教你学Maven-实战这一篇就够了(上)
|
6月前
|
Java Linux 网络安全
在Linux上搭建Maven仓库的实战教程
在Linux上搭建Maven仓库的实战教程
385 0
|
6月前
|
存储 Java 测试技术
rodert教你学Maven-实战这一篇就够了(下)
rodert教你学Maven-实战这一篇就够了
43 0
|
7月前
|
前端开发 JavaScript Java
Maven实战 Item3 -- Maven项目构建2_构建一个maven2 3项目
Maven实战 Item3 -- Maven项目构建2_构建一个maven2 3项目
|
2月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
35 5
|
3月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
81 6