irpas技术客

搭建springcloud+nacos项目--IDEA_Tomorrow_nacos项目搭建

大大的周 1444

文章目录 1、前置1、前置介绍, 环境, 以及对应的依赖说明2、创建项目1. 创建父项目2. 创建子项目 3、配置pom文件1.父项目pom.xml2.子项目pom.xml 4、以服务发现做测试5、个人总结


1、前置

1、前置介绍, 环境, 以及对应的依赖说明 (重点) 2、创建项目 (主要是给基础像我一样薄弱的同学使用) 3、配置对应的pom文件 (重点) 4、以服务发现进行测试 5、个人总结

1、前置介绍, 环境, 以及对应的依赖说明

环境说明:

JDK:1.8maven: 3.6.3(本来我用的是3.3.9, 至于为什么更换了版本, 这个后面会说明, 版本是否更换不影响)Spring Boot: 2.2.5.RELEASESpring Cloud: Hoxton.SR3Spring Cloud Alibaba: 2.2.1.RELEASE开发工具: IntelliJ IDEA 2020.2 x64系统: Windows 10

搭建项目前, 还是要说一下Spring Boot、 Cloud、Cloud Alibaba三者对应的关系

Spring Cloud 基于 Spring BootSpring Cloud Alibaba 是 Spring Cloud 的子项目

先把这个顺序理清楚了, 我们在搭建项目的时候, 以及在后面进行功能的开发,以及所碰到的问题, 包的配置方面, 都能够做到思维更清晰

Spring相关版本不清楚的, 可以参考我本专栏的第一篇文章, 有做详细说明

2、创建项目 1. 创建父项目 选择mavennext finish (不做任何勾选)删除src 2. 创建子项目 new module选择spring initializr, 默认选择, next选择对应的jdk版本, 打包方式图片有做讲解next留一个src和pom文件

3、配置pom文件 1.父项目pom.xml 这里需要说一下spring对应的三个依赖从哪里获取, 或者说我为什么这么写, 网上搜索出来的往往各种各样的, 自己有时都不知该如何进行选择, 我们需要有一个自己的抉择标准这个项目中的, 父项目的pom.xml的作用主要是用来做版本控制使用, 统一jar包版本springCloud: 我是从官方找寻的:https://spring.io/projects/spring-cloudspringCloudAlibaba: 我是从官方找寻的:https://spring.io/projects/spring-cloud-alibaba基于3、4, 以及上面说有的spring三者的关系,我知道我还缺一个springBoot的最终我是在nacos的GitHub进行确定了以下的用法:https://github.com/alibaba/spring-cloud-alibaba/blob/master/pom.xml. 这个gitHub进入方式: nacos官网-Nacos Spring Cloud 快速开始-划到最下面有一个Spring Cloud Alibaba (这里要重点说明一下, 官方给的GitHub, 我们也要注意是否过时, 版本对否偏低, 比如nacos完整示例代码请参考,就是已经很久没有进行更新过的项目了)

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>untitledTest</artifactId> <packaging>pom</packaging> <version>${revision}</version> <!-- 指定模块, 指定对应的子项目 --> <modules> <module>demo</module> </modules> <properties> <!-- 指定项目版本 --> <revision>1.0-SNAPSHOT</revision> <!-- 指定SpringBoot版本 --> <spring-boot.version>2.2.5.RELEASE</spring-boot.version> <!-- 指定SpringCloud版本 --> <spring-cloud.version>Hoxton.SR3</spring-cloud.version> <!-- 指定SpringCloudAlibaba版本 --> <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version> <!-- 指定JDK版本 --> <java-jdk.version>1.8</java-jdk.version> </properties> <!-- dependencyManagement: 对所依赖jar包进行版本管理的管理器,声明依赖,并不实现引入. 1.不在子项目中声明依赖,是不会从父项目中继承下来的 2.只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项 3.子项目中指定了版本号,那么会使用子项目中指定的jar版本。 主要: 主要管理版本 --> <dependencyManagement> <dependencies> <!-- 声明依赖 springBoot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 声明依赖 springCloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 声明依赖 springCloudAlibaba --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project> 2.子项目pom.xml 应用父项目, 由于父项目已经指定了版本, 我们在引用的时候就不需要在对版本进行指定(这里不指定版本, 是指比如:spring-cloud-alibaba-dependencies下面包含的包), 查看方式 ctrl+鼠标左键, 或者通过包的依赖图进行查看 引入父项目的版本, 我们写的是${revision}, Windows的可能会报一个红线, 只是IDEA没有识别, 网上有说升级maven到3.5.0以上, 我试了一下没有起到效果, 不知道是不是我的方式不对, 也是我上面环境介绍中maven版本为什么有两个导致的, 解决方法: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 引入父项目 --> <parent> <groupId>org.example</groupId> <artifactId>untitledTest</artifactId> <version>${revision}</version> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>${revision}</version> <name>demo</name> <description>Demo project for Spring Boot</description> <dependencies> <!-- 父项目中我们已经指定了对应的版本, 这里直接使用就行, 不用在引用版本 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 服务注册与发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 4、以服务发现做测试

上面的pom.xml文件中, 我们已经导入了服务发现的包 这里直接运行

application.yml:

server: # 端口 port: 18082 spring: application: name: testName cloud: nacos: discovery: # 指定nacos server的地址 server-addr: 127.0.0.1:8848

可能会报错如下:

2021-03-13 00:50:53.059 ERROR 17696 --- [ main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml' 解决方式: 修改右下角字符集 UTF-8 2021-03-13 00:53:52.714 WARN 17132 --- [ main] c.a.c.n.registry.NacosServiceRegistry : No service to register for nacos client.. 解决方式,指定: spring: application: name: testName

启动成功:

5、个人总结 其实本篇博客只是简单的介绍,有很多地方都没有写出来, 还需要大家自行在深入研究一下. 比如我们项目的版本我是通过revision进行标记, 是否可以采用revision_test了?答案在第二点列举的文档中有说明基于pom文件, 里面有很多节点, 这里也只是列举了部分, 大家可以查阅官方文档: http://maven.apache.org/pom.html#The_Super_POM, 以及父pom.xml还可以扩展很多, 大家可以查阅一下官方GitHub给的案列本篇文章中也是查阅了很多文章, 网上寻找了很多列子, 最后影响自己决定使用哪种方法, 都是通过官方文档或者官方示列父pom.xml文件里面还可以指定dependencies节点, 模块都会使用到的jar, 都可以在父模块进行指定, 子模块进行引入就行个人建议, 既然已经做到微服务了, 对pom文件的结构一定要多了解一点, 深入一点, 对自己会有很大的帮助的以官方文档为树干, 已网上文章为树枝进行扩展


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #nacos项目搭建 #更新时间pmxml介绍