如何在Maven中隐藏编译的间接依赖关系



我有一个依赖于另一个功能非常广泛的库的库。我希望能够向编译器隐藏间接依赖项,但仍然为运行时打包它。我想在我的项目中将间接依赖的范围从"compile"更改为"run"。我如何在Maven中做到这一点?

澄清一下:间接依赖是一个"实用程序"库,它包含了很多我不使用也不想使用的类(例如,它自己的LogManager和Logger,或者从Date派生的类)。由于我使用的是Eclipse,所以我不想在错误的时刻点击"Ctrl-Space"而意外地引入其中一个类。

使用依赖项排除来隐藏旧的依赖项,如下所示:(这里,我们隐藏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>

因此,这基本上消除了间接依赖的使用。然后,您可以将其作为项目的常规依赖项添加回来,范围可以是您想要的任何范围。

最新更新