我有一个我依赖的库,它依赖于另一个具有非常广泛功能的库。我希望能够隐藏编译器的间接依赖关系,但仍然将其打包为运行时。我想说我想在我的项目中将间接依赖的范围从“编译”改为“运行”。我怎样才能在Maven中做到这一点?
澄清:间接依赖是一个“实用程序”库,它包含许多我不使用但不想使用的类(例如,它自己的LogManager和Logger,或者从Date派生的类)。由于我使用Eclipse,因此我不想在错误的时刻点击“Ctrl-Space”而意外地将其中一个类带入。
答案 0 :(得分:3)
使用a dependency exclusion隐藏旧的依赖关系,如下所示:(此处,我们隐藏sample.ProjectB
)
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
所以这基本上消除了间接依赖的使用。然后,您可以将其作为项目的常规依赖项添加回来,范围可以是您想要的任何内容。