背景
在idea或者eclipse中创建maven项目时对于依赖组件的版本管理还是非常重要的,尤其是在多模块的maven项目中,如果各个模块都在自己的pom.xml中随意指定相同依赖库的不同版本,则很容易出现jar包冲突的问题。因此maven提供了帮我们实现对依赖库版本的统一管理。
实现原则
1、首先在父级项目的pom.xml中通过在指定各子模块可能依赖的库的版本。
2、为了方便依赖库的版本查看和升级,版本信息统一在父级项目的pom.xml中的中指定。
3、在各子模块项目中的pom.xml中直接在中使用依赖需要的库,不用再指定库的版本信息,就是可以省略。
实现案例
1、首先在父级项目的pom.xml中通过在指定各子模块可能依赖的库的版本。案例如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus-starter.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus-generator.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-starter.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2、为了方便依赖库的版本查看和升级,版本信息统一在父级项目的pom.xml中的中指定。实现案例如下:
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.4.RELEASE</spring-cloud-alibaba.version>
<druid-starter.version>1.2.4</druid-starter.version>
<mybatis-plus-starter.version>3.4.1</mybatis-plus-starter.version>
<mybatis-plus-generator.version>3.4.1</mybatis-plus-generator.version>
</properties>
3、在各子模块项目中的pom.xml中直接在中使用依赖需要的库,不用再指定库的版本信息,就是可以省略。案例如下:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
<dependency>
<groupId>com.wongoing</groupId>
<artifactId>wgms-redis-spring-boot-starter</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>