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

时间:2014-10-06 13:48:13

标签: java maven

我有一个我依赖的库,它依赖于另一个具有非常广泛功能的库。我希望能够隐藏编译器的间接依赖关系,但仍然将其打包为运行时。我想说我想在我的项目中将间接依赖的范围从“编译”改为“运行”。我怎样才能在Maven中做到这一点?

澄清:间接依赖是一个“实用程序”库,它包含许多我不使用但不想使用的类(例如,它自己的LogManager和Logger,或者从Date派生的类)。由于我使用Eclipse,因此我不想在错误的时刻点击“Ctrl-Space”而意外地将其中一个类带入。

1 个答案:

答案 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>

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