简介
我的秋招基本结束了,最忙碌的时间段是8、9月,10月基本没有什么笔试/面试了,或是自己真的累了,不想再继续秋招了,想躺了,一些确实是自己主动结束流程的
因为有了秋招的经历,现在更加了解自己的知识体系,明白自己需要补充哪些内容,因为秋招实在是很煎熬,一下子从那样的状态转换过来,确实很不适,很空虚。
所有偶尔会花些时间继续之前的学习,比如我要说的谷粒商城 ,这里就记录一下困扰了我好久的一个问题
说明
关于项目下面有两个链接可以了解一下
B站:https://www.bilibili.com/video/BV1np4y1C7Yf
笔记:https://www.yuque.com/zhangshuaiyin/guli-mall/wrbzgy
问题
我遇到问题是p125
的SpringBoot
整合ElasticSearch
出现的子项目<properties>
标签指定版本不生效问题。
需要引入的是elasticsearch-rest-high-level-client
,版本根据自己的ES
定
1 2 3 4 5 <dependency > <groupId > org.elasticsearch.client</groupId > <artifactId > elasticsearch-rest-high-level-client</artifactId > <version > 7.11.1</version > </dependency >
直接引入出现的问题是SpringBoot
自带的ES
组件版本与我们需要的不同,会产生一些问题(如下图是我们期望的结果,但之前却是红框中是SpringBoot
自带的ES版本),在使用一些api会有问题
Maven依赖版本声明
按照视频里的做法是配置<properties>
标签,加上ES
版本
在我使用的SpringBoot
中找到ES
版本配置,根据就近原则,我们只需在项目中做如下配置即可(这也是视频中的方法)
1 2 3 <properties > <elasticsearch.version > 7.11.1</elasticsearch.version > </properties >
但是却没有我期待的结果,试了很多次,怎么都不对,虽然可以暴力引入对应包解决(也就是加入如下代码),但不觉得那是最好的方案
1 2 3 4 5 6 7 8 9 10 11 <dependency > <groupId > org.elasticsearch</groupId > <artifactId > elasticsearch</artifactId > <version > ${elasticsearch.version}</version > </dependency > <dependency > <groupId > org.elasticsearch.client</groupId > <artifactId > elasticsearch-rest-client</artifactId > <version > ${elasticsearch.version}</version > </dependency >
哪里出了问题
就近原则不对?IDEA有bug?
各种想法都出现了,但始终无法解决
这时想到我虽然是照着视频学习的,代码都是自己敲的,但自己也并非是一成不变的,比如整个项目架构,因为自己有一定基础,我会对父子项目进行小重构,会通过父项目管理一些公共的版本依赖等
所以我拿了一个新项目做实验,完全按照视频里那样,也就是SpringBoot
项目,引入elasticsearch-rest-high-level-client
,并配置<properties>
版本
果然就是我期望的结果,那么现在问题很明显了,问题就在我的search子项目的父项目是我配置的大的父项目,里面包含了很多其他的依赖,可能是这里的问题
最终解决方案
父pom
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 <?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 > <groupId > com.wnh.gulimall</groupId > <artifactId > gulimall</artifactId > <version > 0.0.1-SNAPSHOT</version > <name > gulimall</name > <description > Demo project for Spring Boot</description > <packaging > pom</packaging > <modules > <module > gulimall-coupon</module > <module > gulimall-member</module > <module > gulimall-order</module > <module > gulimall-product</module > <module > gulimall-ware</module > <module > renren-fast</module > <module > gulimall-common</module > <module > gulimall-gateway</module > <module > gulimall-third-part</module > <module > renren-generator</module > <module > gulimall-search</module > </modules > <properties > ... <elasticsearch.version > 7.11.1</elasticsearch.version > </properties > <dependencyManagement > <dependencies > ... <dependency > <groupId > org.elasticsearch.client</groupId > <artifactId > elasticsearch-rest-high-level-client</artifactId > <version > ${elasticsearch.version}</version > </dependency > <dependency > <groupId > org.elasticsearch</groupId > <artifactId > elasticsearch</artifactId > <version > ${elasticsearch.version}</version > </dependency > <dependency > <groupId > org.elasticsearch.client</groupId > <artifactId > elasticsearch-rest-client</artifactId > <version > ${elasticsearch.version}</version > </dependency > ... </dependencies > </dependencyManagement > ... <dependencies > ... </dependencies > </project >
子pom就很简单了,直接引入即可不用版本
1 2 3 4 <dependency > <groupId > org.elasticsearch.client</groupId > <artifactId > elasticsearch-rest-high-level-client</artifactId > </dependency >
补充
在解决问题中还发现了项目中一些依赖冲突问题,推荐使用IDEA的插件Maven Helper
解决
我也是早就下了这个插件,但一直没有使用,正好在这里实践了 s
如上,pom下有Text
和Dependency Analyzer
两个选项
Text
显示pom内容
Dependency Analyzer
依赖分析,它会分析pom依赖之间存在的问题,冲突项会展示出来
如果觉得依赖关系不清晰的还可以,通过右侧Maven
工具栏找到Show Dependencies...
展示依赖图,其中冲突会以红色标识,非常方便
可以通过排除某些依赖解决冲突
总结
近期学习状态不行,秋招结束躺了很久了,状态确实不如之前,希望能慢慢恢复吧,找到一种适应自己的Balance