发表于: 2020-07-23 23:36:24
1 1394
今天完成的事情
1. 完成了 maven 多模块的编译
遇到的问题
1. 在 idea 可以运行但是无法打包
打包的时候会尝试去阿里源下载我本地定义的模块,后来我重新定义了根依赖与子依赖的关系,发现maven 侧边栏一片红,仔细查看之后发现是缺少以来的版本信息。
手动给每个依赖加上版本号解决了这个问题。
2. 模块编译成功,运行失败,提示无法注入 bean
当我按照它的提示添加了一个配置信息之后又报错说 redis 的配置无法注入,让我手动在配置文件里注册一个 bean
3. 手动注入 bean 之后又会报其他的错误
在经历了上述折磨之后我意识到这个报错是有问题的,它提示的错误并不是原因,而是某个配置不正确的副作用。
我仔细查看了依赖树,发现我的依赖树非常混乱,spring 版本多了两三个。
我回滚了 pom 文件,开始搜索 pom 多模块版本管理相关的设置,原来我本来是想着配置一个 <spring.version> 这样的东西,结果搜出来了 <dependencyManagement> 这个东西就是用来在多模块项目中来管理依赖版本的,果断用上,简单的配置了一下稳得很,跑通了。
父项目关键点
<packaging>pom</packaging>
<modules>
<module>ptteng-common</module>
<module>ptteng-interface</module>
<module>ptteng-web</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.1.RELEASE</version>
</plugin>
</plugins>
</build>
子项目要注明依赖于父项目
<parent>
<groupId>cn.mogeek.rmi</groupId>
<artifactId>ptteng</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
收获
1. <dependencyManagement>
为了项目的正确运行,必须让所有的子模块使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。在我们项目顶层的pom文件中,我们会看到dependencyManagement元素。
通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
明天的计划
1. 深度思考
评论