我的Maven项目中有以下依赖项
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.2.jre8</version>
<!-- Exclude unused Azure dependencies -->
<exclusions>
<exclusion>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-keyvault</artifactId>
</exclusion>
<exclusion>
<groupId>com.microsoft.azure</groupId>
<artifactId>adal4j</artifactId>
</exclusion>
</exclusions>
</dependency>
我在这里使用Maven中最新的非预览mssql-jdbc版本 https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc
但是当我运行mvn clean package
时,我生成的war文件在mssql-jdbc-6.1.0.jre7.jar
而不是预期的WEB-INF/lib
中有mssql-jdbc-6.2.2.jre8.jar
。我已经尝试清除我的本地.m2
存储库并重新打包但这没有帮助。值得注意的是6.1.0.jre7
实际上是那里最古老的版本,所以我的猜测是由于某种原因它无法找到最新的版本并且正在恢复到最老的版本?我被卡住了。
答案 0 :(得分:1)
我遇到了同样的问题,并且我正在使用Spring Boot1.5.x。
根本原因是:Spring Boot(1.5.x)指定了版本“ 6.1.0.jre7”。
解决方法是:在包含Spring Boot Application的主模块中指定您的版本。
我依赖的上一部分:
子模块1:
<groupId>com.my.company</groupId>
<artifactId>sub-module1</artifactId>
<version>1.0</version>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.1.3.jre8-preview</version>
</dependency>
主模块,其中包含Spring boot Application:
<dependency>
<groupId>com.my.company</groupId>
<artifactId>sub-module1</artifactId>
<version>1.0</version>
</dependency>
我发现主模块boot.jar包含“ mssql-jdbc-6.1.0.jre7.jar”。
最后,我发现版本是在“ spring-boot-parent”的父级“ spring-boot-dependencies”中指定的。
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.16.RELEASE</version>
<mssql-jdbc.version>6.1.0.jre7</mssql-jdbc.version>
解决方案: 在主模块中指定版本:
<dependency>
<groupId>com.my.company</groupId>
<artifactId>sub-module1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.1.3.jre8-preview</version>
</dependency>
通过mvn denpendency:tree检查结果,没关系