我写一个库,具有以下依存关系:从另一个依赖指定的依赖性明确Maven的
```
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-servlets</artifactId>
<version>[3.1.0,)</version>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>[3.1.0,)</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.3.2</version>
<scope>provided</scope>
</dependency>
```
现在的问题是 - 一些用户这个库的使用也与dropwizard-core
一起使用,在这种情况下,我的库为dropwizard框架提供了一些额外的功能,因此dropwizard-core
是一个可选的依赖项。
问题是 - 当用户进口dropwizard-core
- 它会自动将包括我上面指定(如metrics-core
),并在这种情况下,其他依赖 - 经由dropwizard-core
导入的版本可以与显式指定的版本冲突。我该如何解决这个问题?
该库的用户将使用它 - 没有dropwizard-core
,因此我不希望这些用户导入dropwizard-core
(以及因此原子依赖性)。
谁导入的用户(我假设你的意思是使用的依赖关系)可以覆盖你的决定。此外,我建议你永远不要使用版本范围....如果你有可选的依赖关系,而不是将它们定义为可选... – khmarbaise
这是好的,我已经删除了版本范围,并制定了特定的版本。但依赖关系仍然是怪异的总体。 –