【Maven】引入的jar包并未按照pom文件中的版本来


故事背景

有个springboot工程引入一个子工程,子工程中有一个jar包
在这里插入图片描述
但结果每次引入的时候该jar的版本却一直是6.1.0.jre7

在StackOverFlow上面看一个回答,可能是引用的其他工程中也包含有这个依赖,然后被那个依赖覆盖了。

最后发现是springboot的锅。

其实在Spring Boot 项目下的pom.xml文件中通常都会有一个标签,用来指定继承的父pom

<parent> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-parent</artifactId>   
   <version>1.5.2.RELEASE</version> <relativePath/> 
</parent>

然后点击发现spring-boot-starter-parent也继承自一个pom

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-dependencies</artifactId>
		<version>1.5.2.RELEASE</version>
		<relativePath>../../spring-boot-dependencies</relativePath>
	</parent>

再点击这个dependencies, 如下

	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-dependencies</artifactId>
	<version>1.5.2.RELEASE</version>
	<packaging>pom</packaging>
	<name>Spring Boot Dependencies</name>
	<description>Spring Boot Dependencies</description>
	<url>http://projects.spring.io/spring-boot/</url>
	<organization>
		<name>Pivotal Software, Inc.</name>
		<url>http://www.spring.io</url>
	</organization>


很多行...

<properties>
		<!-- Dependency versions -->
		<activemq.version>5.14.3</activemq.version>
		<antlr2.version>2.7.7</antlr2.version>
		<appengine-sdk.version>1.9.49</appengine-sdk.version>
		<artemis.version>1.5.3</artemis.version>
		<aspectj.version>1.8.9</aspectj.version>
		<assertj.version>2.6.0</assertj.version>
		...
        <mssql-jdbc.version>6.1.0.jre7</mssql-jdbc.version>
        ...
        

看到罪魁祸首的那一行了吗?

要想让我们的version生效,需要在引用方强制让我们想要的版本号生效。


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

    <properties>
        ... 其他内容
        <mssql-jdbc.version>6.2.0.jre8</mssql-jdbc.version>
    </properties>

即可

其他方式参考如下博客

springboot项目中如何在pom文件覆盖starter中默认指定的jar版本号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值