Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java POM中是否有方法为依赖包指定更高版本?_Java_Spring_Spring Boot_Maven - Fatal编程技术网

Java POM中是否有方法为依赖包指定更高版本?

Java POM中是否有方法为依赖包指定更高版本?,java,spring,spring-boot,maven,Java,Spring,Spring Boot,Maven,我正在使用Maven在我的应用程序中设置依赖项 我使用的是SpringBootV2.1.12.RELEASE,它引入了SpringCoreV5.1.13 但也有一个最新的库Spring Integration v5.1.9,它带来了Spring Core v5.1.11.0版本 正如您所看到的,我希望Spring集成不要解决Spring Core的v5.1.11,因为它有一些漏洞 有没有办法在POM中指定Spring集成,以解决Spring核心的5.1.13而不是5.1.11 另外,我不想升级到

我正在使用Maven在我的应用程序中设置依赖项

我使用的是SpringBootV2.1.12.RELEASE,它引入了SpringCoreV5.1.13

但也有一个最新的库Spring Integration v5.1.9,它带来了Spring Core v5.1.11.0版本

正如您所看到的,我希望Spring集成不要解决Spring Core的v5.1.11,因为它有一些漏洞

有没有办法在POM中指定Spring集成,以解决Spring核心的5.1.13而不是5.1.11


另外,我不想升级到最新版本的Spring Boot。

使用maven排除标记排除可传递的依赖项,确保排除的库直接添加到pom,或者由其他依赖项拉入

<dependency>
   <groupId>org.springframework.integration</groupId>
   <artifactId>spring-integration-core</artifactId>
   <version>5.1.9</version>
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>5.1.11.RELEASE</version>
      </exclusion>
   </exclusions>
</dependency>

免责声明:这只是一个针对您当前需要的变通解决方案,只有在没有其他选项时才可以使用它,因为从长远来看,管理spring管理的依赖项本身是不可维护的

我用帖子中的推荐来克服我的挑战

因此,我从spring集成中排除了spring核心依赖项,并使用下面的代码添加了spring核心库

 <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.13.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

从技术上讲,您当然可以升级,只需将此依赖项添加到pom文件并更新版本,但我强烈反对这样做,因为这意味着其他依赖项是可传递的。我建议将您的spring boot版本升级到最新的2.2.4版本…如果它解析为5.1.11,则说明您的pom有问题。SpringBoot管理依赖项。换句话说,请发布您的pom.xml。@M.Deinum:添加了pom快照。您应该导入spring引导依赖项,或者按照说明将spring引导定义为父项。删除spring integration的版本标签。如果您在spring boot应用程序中开始这样做,则说明您做得不对,尤其是在spring boot托管依赖项方面。@M.Deinum我同意您的看法。Spring管理的依赖关系我们不应该开始管理,这违背了我们的目的,而且从长远来看更难维护。然而,如果用户出于任何原因决定使用它作为最后手段来规避他的限制,那么有一种方法,这就是我试图通过我的回答传达的内容。@M.Deinum在我的回答中添加了免责声明。感谢您指出这一点。您需要这一点清楚地表明您的pom存在问题。是的,这可能是因为设计pom的人没有包括spring boot starter家长,这有点烦人。
 <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.13.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>