需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本
Posted
技术标签:
【中文标题】需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本【英文标题】:Need to exclude spring-orm module from spring boot 2.0 and use an older version of it from a jar file 【发布时间】:2019-07-30 05:32:27 【问题描述】:我有一个 .jar 工件,它在技术上是一个 DAO 层,它是使用较旧的技术堆栈构建的。
Java 1.6 Spring 3.1.0.RELEASE 休眠 3.5.6-Final 马文我想将此 .jar 作为依赖项添加到我的新 spring boot 2.x 项目中,并用作应用程序的数据层。
新的应用技术栈:
Java 1.8 Spring Boot 2.1.3 Spring 框架 5 分级据我了解,我在 build.gradle 中添加了较旧的 jar 作为依赖项,并排除了 spring-orm 模块。但是 gradle 仍然会拉取最新版本,而不是使用旧 .jar 依赖项中的版本。
build.gradle
group = 'com.test.app'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories
mavenCentral()
maven
credentials
username = "$nexusUsername"
password = "$nexusPassword"
url "$nexusUrl"
// exluded spring-orm from spring boot 2.x
configurations
compile.exclude module: 'spring-orm'
dependencies
// my older dao dependency
implementation "com.my.older.core:dao:0.3.8-SNAPSHOT"
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
由于 dao .jar 使用的是旧版本,因此我需要在 spring boot 2.x 中让应用程序使用旧版本的 orm 版本而不是新版本。
对此的任何线索将不胜感激。 谢谢。
【问题讨论】:
不,你不想添加那个 jar。你不应该混合来自不同版本的框架的 jars。这将导致奇怪和严重的错误。看看它是否适用于常规的 Spring Orm 版本,如果不能修复你的旧 dao 或者不重用而是重建。但永远不要开始混合来自不同版本框架的 jar。一种解决方案可能是降级到较旧的 Spring Boot 版本,以查看 Spring 4.x 版本是否适用于您的 dao。 @M.Deinum 感谢您的洞察力。看来你说的太真实了。但是我处于一种情况,要么选择重用那个 jar,要么在这个新应用程序中重新编写整个 dao 层。可能我应该尝试降级到 Spring Boot 1.x 你最好重写它。如果那里有实体,您也许可以重用它们。然后只需使用 Spring Data JPA 即可快速实现所需的存储库/daos。 是的,你是对的。降级spring boot也没有帮助,所以我现在正在重写它。感谢您的帮助。 取决于你做什么,你不应该混合版本,所以坚持使用 Spring Boot 1.x 附带的版本并尝试你的 dao 依赖。不要尝试包含旧的spring-orm
依赖等。
【参考方案1】:
configurations.all
resolutionStrategy.force 'org.springframework:spring-orm:oldversion'
希望对你有帮助
【讨论】:
永远不要混合来自不同版本框架的不同 jars。这是等待发生的麻烦。以上是关于需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本的主要内容,如果未能解决你的问题,请参考以下文章
Java Spring Boot 测试:如何从测试上下文中排除 java 配置类
从 Spring-Boot 测试中排除 elasticsearchTemplate
从 Gradle 中的 Spring Boot 中排除 Tomcat 依赖项
如何从 spring-boot-starter-parent 中排除特定依赖项