maven父子模块jar包管理和spring boot

maven父子模块jar包管理和spring boot

项目结构:

1parent--父模块空maven项目, 用于管理子模块 2 controller 3 service 4 dao 5 model 6 client--被其他项目依赖进行微服务内部调用(因下面问题导致client在其他项目中版本冲突和引入大量无用的jar包)

存在问题:

  1. 父模块继承spring boot和引入大量jar包, 当项目1引入项目2中的client模块时导致项目2中父模块中很多无用的jar包也引入到项目1中
  2. 开始计划是父模块放公用的包和管理子模块的版本, 最后每个人的习惯不一样导致不同项目之间的版本冲突
  3. spring boot继承在maven父子模块中很容易版本冲突

解决方法:

  1. 哪个模块用到什么引入什么, 保持子模块独立
  2. 父模块只放<properties>标签管理版本, 不引入任何jar包
  3. 父模块不继承spring boot, 由controller层导入spring boot

由父模块继承spring boot改为子模块导入spring boot

1<!-- 父模块不要这样使用继承 --> 2<parent> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-parent</artifactId> 5 <version>1.5.13.RELEASE</version> 6 <relativePath/> <!-- lookup parent from repository --> 7</parent> 8 9 10<!-- 使用dependencyManagement导入版本号 --> 11<dependencyManagement> 12 <dependencies> 13 <!-- 14 自定义版本覆盖spring boot内的版本; 15 比如验证框架6.0.10.Final覆盖spring boot parent内的5.3.6.Final; 16 项目会优先获取spring boot内版本, 覆盖可以避免版本冲突 17 注意: 覆盖版本一定要在spring-boot-dependencies上面 18 --> 19 <dependency> 20 <groupId>org.hibernate</groupId> 21 <artifactId>hibernate-validator</artifactId> 22 <version>6.0.10.Final</version> 23 </dependency> 24 25 <!-- 导入spring boot的pom --> 26 <dependency> 27 <groupId>org.springframework.boot</groupId> 28 <artifactId>spring-boot-dependencies</artifactId> 29 <version>1.5.13.RELEASE</version> 30 <type>pom</type> 31 <scope>import</scope> 32 </dependency> 33 </dependencies> 34</dependencyManagement> 35 36..... 37 38<!-- 使用导入, 一定要使用spring-boot-maven插件, 否则无法使用java -jar 命令 --> 39<plugin> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-maven-plugin</artifactId> 42 <version>1.5.13.RELEASE</version> 43 <configuration> 44 <mainClass>${start-class}</mainClass> 45 <layout>ZIP</layout> 46 <!--<skip>true</skip>--> 47 </configuration> 48 <executions> 49 <execution> 50 <goals> 51 <goal>repackage</goal> 52 </goals> 53 </execution> 54 </executions> 55</plugin>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Maven 基础标签之版本管理和冲突解决

前言我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线maven基础Maven是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理每个maven项目根目录都会有一个pom.xml文件,负责项目构建,依赖管理在这个文件里面,你只需要添加相应的jar包坐标配置,maven就会自动

SpringBoot自定义序列化的使用方式

场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x