根据the documentation我的Spring Boot应用程序pom中有以下内容:
<dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
我需要使用dependencyManagement
和<scope>import</scope>
,因为我需要使用标准的企业基础。
但是,似乎不可能排除spring-boot-dependencies
的传递依赖关系。在我的特定情况下,Spring Boot 1.2.1.RELEASE
引入了一个Jetty版本,这个版本对于我的其他<dependencies>
来说太新了。我尝试使用表单的<exclusion>
:
<dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
<!-- Doesn't work -->
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
使用Maven 3.2.1's wildcard support,但它似乎没有生效。
除了显式覆盖所有Jetty依赖项之外,是否有解决此问题的方法?有许多Jetty库,这种方法会非常脆弱。此外,我似乎也需要对Jetty的传递依赖性做同样的事情。
答案 0 :(得分:2)
根据Spring Boot Maven Plugin 2.3.1.RELEASE documentation,要覆盖各个依赖项,您需要在项目的dependencyManagement
部分中添加条目,在{1>}条目之前。 / p>
spring-boot-dependencies
答案 1 :(得分:1)
看起来像isn't possible with Maven import scope:
导入范围可用于包括依赖关系管理 从远程POM到当前项目的信息。其中一个 这方面的限制是它不允许额外的排除 为多模块项目定义。
同样,来自Spring Boot documentation:
的确认如果您已在自己的游戏中添加了spring-boot-dependencies 您需要
dependencyManagement
的<scope>import</scope>
部分 自己重新定义神器 [...]。