网站首页 > java教程 正文
Maven多模块项目通常由一个父模块和若干个子模块构成,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块)相互关联。多模块适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。
一、创建Parent Project
基于IDEA 创建新的Maven 项目,选择菜单项File->New->Project。
左侧选择Spring Initializr,默认使用Java 1.8 版本,因为是spring boot项目需要选择该选项,会自动添加相关的依赖包,然后点击Next 按钮。
填写GroupId:com.rickie.midend;ArtifactId:smallerordercenter,然后点击下一步Next按钮。
GroupId和ArtifactId统称为“坐标”,是为了保证项目唯一性而提出的。GroupId是项目组织唯一的标识符,实际对应Java 包的结构,ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。GroupId一般分为多个段,一般第一段为域,第二段为公司名称。
举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org,公司名称是apache,artifactId是tomcat。包结构package最好是以groupId.artifactId 开头的。
在Dependencies 依赖窗口,作用是在pom中自动添加一些依赖,在项目开始时就下载。可以根据需要进行选择,这里选择Spring Boot DevTools。
得到一个标准的Spring boot 项目,因为该项目是作为一个Parent project存在的,可以直接删除src文件夹。
此处的父项目只做依赖管理,不需要编写代码。
然后,在pom 文件中,添加 <packaging> 打包类型。
另外,maven项目之间的继承关系通过<parent>元素表示。这里使用的开发框架是spring boot,默认继承spring-boot-starter-parent,下面的截图中有显示。
另外,还需要添加相应的Spring Cloud 依赖管理,本示例项目中引用了当前最新的Greenwich.SR2版本。
使用dependencyManagement管理依赖版本号
一般在项目最顶层的父pom中使用该元素,让所有子模块引用一个依赖而不用显式的列出版本号。maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
继承是maven中很强大的一种功能,继承可以使子pom获得parent中的各项配置,对子pom进行统一的配置和依赖管理。父pom中的大多数元素都能被子pom继承。
二、增加Eureka 注册中心模块(Module)
右键点击smallerordercenter项目,选择New/Module菜单项。
左侧选择Maven,右侧在Create from archetype 列表中,选择 maven-archetype-quickstart 项目类型。
GroupId 继承自父项目,ArtifactId 输入:oc-eureka,然后点击Next 按钮。
在接下来的窗口中,输入模块名称、存放路径等等,最后点击 Finish 按钮。
eureka 作为微服务的注册中心,创建完成之后,如下图所示。
接下来对自动生成的App 类进行rename 操作,如下图所示,更新为EurekaServerApplication。
然后,在该module应用的pom文件中,添加对Eureka组件的依赖包。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
注意:在当前新版的Spring Boot 2.1.x中,spring-cloud-starter-netflix-xx 替换了原有的 spring-cloud-starter-xx。
父模块pom中使用dependencyManagement来管理的依赖,在子模块pom中就不需要再写版本号了,所以上面的依赖包中没有注明版本号。
最后,修改EurekaServerApplication 类,添加相应的注解,以及更新代码。
为了让上述Eureka 应用正常运行,还需要添加 application.yml 配置文件。
spring:
application:
name: sc-eureka-server
server:
port: 8761
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
fetch-registry: false
register-with-eureka: false
现在,可以运行Eureka 应用,看看运行效果,访问http://localhost:8761。
如下是运行输出信息:
在浏览器中访问 http://localhost:8761,可以查看Eureka 注册中心的信息。
三、添加其他服务模块
可以按照上述类似的步骤,创建如下服务模块。
oc-gateway:微服务网关,作为应用入口。
oc-order-import:订单微服务模块,负责订单的导入。
我们把上图中无用的文件及文件夹删掉,包括HELP.md、mvnw、mvnw.cmd文件及.mvn文件夹,都在父项目中。
多模块项目中,父模块打包类型必须是pom,同时以给出所有的子模块,其中每个module,都是另外一个maven项目。
猜你喜欢
- 2024-11-09 SpringBoot入门之工程搭建(IDEA版)
- 2024-11-09 Spring Initializer+IntelliJ IDEA创建Spring Boot项目(图文)
- 2024-11-09 2020年IntelliJ IDEA最新最详细配置图文教程
- 2024-11-09 第六篇:使用IntelliJ IDEA编写你的第一个Java程序
- 2024-11-09 「Java开发中文指南」IntelliJ IDEA插件安装(一)
- 2024-11-09 SpringBoot项目的创建和配置的详细介绍
- 2024-11-09 IntelliJ IDEA搭建SpringBoot(intellij idea搭建聊天界面)
- 2024-11-09 IntelliJ IDEA 项目(idea java项目)
- 2024-11-09 idea搭建spring cloud项目-父子项目
- 2024-11-09 IDEA新建项目时的默认配置与模版配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)