项目结构
接下来我将开始尝试创建基于SpringCloud的eureka微服务项目架构,首先看一下项目的总体文件模块结构:
其对应的Maven模块结构如下:
springcloud-parent中pom.xml
springcloud-parent中pom.xml的作用
springcloud-parent父模块在这里的作用主要有如下这么几点:
- 指定项目的公共依赖模块
比如说下面的指定spring boot的parent,也就是说指定当前模块是哪一个Maven模块的子模块,这样自该模块下的所有子模块,全部都会继承该parent父模块中的依赖。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
它的另一个作用是指定子模块所继承的公共依赖,比如说junit测试依赖,比如说logging日志依赖等等都是如此。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
- 加载子Maven模块
Maven父模块是通过如下方式自动加载子模块的:
<modules>
<module>springcloud-goods-item</module>
<module>springcloud-goods-order</module>
<module>springcloud-eureka</module>
<module>springcloud-eureka2</module>
<module>springcloud-goods-item2</module>
<module>springcloud-api-gateway</module>
<module>springcloud-config-server</module>
<module>springcloud-config-resources</module>
<module>rabbit-mq-resources</module>
<module>springcloud-goods-db</module>
</modules>
这样我们在父模块中执行Maven指令,其Maven指令会自动的传递到子Maven模块中执行,比如说下面的指令就是如此:
mvn clean
它的意思是清理父模块以及子模块中的target文件夹
- 指定子Maven模块的软件版本
根据Maven的规则,一旦在父模块中指定版本号,其子模块就不用指定版本号了,因为子模块的版本号默认与父模块相同。
- 指定子Maven模块的插件信息
其通过plugins来指定子模块中所使用的插件版本及信息,这样子模块中就无需重复再写了,直接使用父模块中的插件及对应的版本,比如说Maven的编译插件maven-compiler-plugin等。
- 指定子Maven模块的资源打包方式
在这里,其指定的是将Spring Cloud的配置文件*.yml
视为资源文件进行使用,比如说打入war包等。当然,位于resources文件夹内的文件,默认就是资源文件,所以说这里也可以省略。
<resource>
<directory>src/main/resources</directory