这里顺便学习了一般项目中的结构来搭建
首先创建一个module,作为parent-module,然后删除自动生成的src等目录,留下pom文件作为parent
并重写pom修改此pom的打包方式。
并且添加Module
<modules>
<module>nacos-provider-demo</module>
...
</modules>
同时将子包需要用到的共用依赖全部放入中,以便统一管理版本号。
这里需要注意的是,如果parent-pom已经继承了spring-boot-starter-parent,如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.kiring</groupId>
<artifactId>nacos_service_discovery_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos_service_discovery_demo</name>
<description>Demo project for Spring Cloud Nacos Service Discovery</description>
<packaging>pom</packaging>
那属于这个spring-boot-stater-parent的依赖就不能放进dependencyManagement中,这是因为这个里面是需要指明version表示的,并且是一定为连接到子包的,就比如这个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这个依赖不需要版本号,因为其版本本身是由spring-boot-starter-parent这个pom控制的,但是如果把其放入dependencyManagement中,且不加版本号,那么子依赖的spring-boot-starter-web就会有dependencyManagement里的控制,而不是spring-boot-starter-parent控制,从而失去版本号。
如果想要依赖关系更加清晰,可以使用spring-boot-dependenciesh和spring-cloud-dependencies这两个依赖(alibaba-nacos官方demo就是这么用的)
把这两个依赖放入dependencyManagement中,并加上相应的SpringBoot版本号和SpringCloud的版本号,比如这里用的分别是2.1.10.RELEASE,Greenwich.RELEASE
编写配置文件:
server:
port: 8001
spring:
cloud:
nacos:
config:
server-addr: 192.168.116.210:9000
file-extension: yaml
discovery:
server-addr: 192.168.116.210:9000
application:
name: nacos-provider-demo
关于版本
根据官网的版本关系,2.1.x的SpringBoot使用Greenwith的SpringCloud
并配合2.1.1的Spring Cloud Alibaba Version
版本说明