使用 spring 引导如何从 spring-data-releasetrain 中排除模块
Using spring boot how to exclude module from spring-data-releasetrain
我正在将所有内容迁移到 spring-引导版本 1.4。3.RELEASE。
在迁移之前我已经在使用 spring-data-solr 版本 2.1.0.RELEASE.
引入 spring 引导后,我开始注意到一些错误、缺少方法等...
所以我做了一些挖掘,发现在 spring 启动依赖项中,spring-data-releasetrain 使用旧版本的 spring-data-solr 而不是强制的版本为了我。
我试图重新声明与我 pom.xml 中的版本的依赖关系,但没有成功。
奇怪的是,当我检查 Maven 依赖项下的构建路径时,该依赖项适用于 spring-data-solr 版本 2.1.0.RELEASE。所以这不会导致任何编译时问题,这只发生在 运行 时间...
我想知道我是否可以排除 spring-data-solr 并重新导入我自己的?还是有更好的方法来管理它?
是的,您可以排除不需要的版本并重新导入您自己的版本。
但这只有在您的 spring-data-solr 版本与您正在使用的 spring-boot 版本兼容时才有意义,在 compile-time 以及 run-time.
最简单的方法是在 pom.xml 的 dependencyManagement 部分声明所需的版本。参见 introduction-to-dependency-mechanism
dependency management takes precedence over dependency mediation for transitive dependencies
也就是说,你在依赖管理中声明的版本应该覆盖来自传递依赖的版本。
我有星座,这还不够,我仍然在我的类路径中找到不需要的版本。如果发生这种情况,您必须排除不需要的依赖项。
在 Maven 中,排除看起来像这样:
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.0.7.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
在上面的代码中我排除了spring-beans,所以它不会在spring-security-oauth2 要求的不需要的版本中引入。
您需要为所有依赖项执行此操作,以某种方式撕裂您的 spring-data-solr 不需要的版本。
做这件事时你最好的朋友是
mvn dependency:tree -Dverbose -Dincludes=org.springframework.data:spring-data-solr
它准确地向您展示了您的项目必须依赖哪些 spring-data-solr 以及它们存在的原因。参见 Maven for details
所以你制作 mvn dependency:tree,添加排除并重复直到你不再依赖于不需要的版本。
最后你添加了一次对所需版本的依赖。
我正在将所有内容迁移到 spring-引导版本 1.4。3.RELEASE。
在迁移之前我已经在使用 spring-data-solr 版本 2.1.0.RELEASE.
引入 spring 引导后,我开始注意到一些错误、缺少方法等...
所以我做了一些挖掘,发现在 spring 启动依赖项中,spring-data-releasetrain 使用旧版本的 spring-data-solr 而不是强制的版本为了我。
我试图重新声明与我 pom.xml 中的版本的依赖关系,但没有成功。
奇怪的是,当我检查 Maven 依赖项下的构建路径时,该依赖项适用于 spring-data-solr 版本 2.1.0.RELEASE。所以这不会导致任何编译时问题,这只发生在 运行 时间...
我想知道我是否可以排除 spring-data-solr 并重新导入我自己的?还是有更好的方法来管理它?
是的,您可以排除不需要的版本并重新导入您自己的版本。 但这只有在您的 spring-data-solr 版本与您正在使用的 spring-boot 版本兼容时才有意义,在 compile-time 以及 run-time.
最简单的方法是在 pom.xml 的 dependencyManagement 部分声明所需的版本。参见 introduction-to-dependency-mechanism
dependency management takes precedence over dependency mediation for transitive dependencies
也就是说,你在依赖管理中声明的版本应该覆盖来自传递依赖的版本。
我有星座,这还不够,我仍然在我的类路径中找到不需要的版本。如果发生这种情况,您必须排除不需要的依赖项。
在 Maven 中,排除看起来像这样:
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.0.7.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
在上面的代码中我排除了spring-beans,所以它不会在spring-security-oauth2 要求的不需要的版本中引入。 您需要为所有依赖项执行此操作,以某种方式撕裂您的 spring-data-solr 不需要的版本。
做这件事时你最好的朋友是
mvn dependency:tree -Dverbose -Dincludes=org.springframework.data:spring-data-solr
它准确地向您展示了您的项目必须依赖哪些 spring-data-solr 以及它们存在的原因。参见 Maven for details
所以你制作 mvn dependency:tree,添加排除并重复直到你不再依赖于不需要的版本。
最后你添加了一次对所需版本的依赖。