我如何向maven指出一个依赖项提供另一个依赖项?

我如何向maven指出一个依赖项提供另一个依赖项?,maven,guava,Maven,Guava,在版本11.0.2之后,Google的guava库切换到Java6。幸运的是,对于那些坚持使用Java5的人来说,他们还发布了一个“guava-jdk5”工件 不幸的是,我的一些依赖关系过渡地引入了Guava11.0.2。这使得我的项目同时包含番石榴-jdk5和番石榴 通常,当我有冲突的版本时,我可以使用“dependencymanagement”标记来指示要拉入哪个版本。但由于这是两个不同的工件,我不明白如何做到这一点。最后我想告诉maven,番石榴和guava-jdk5是同一个工件,我想使用

在版本11.0.2之后,Google的guava库切换到Java6。幸运的是,对于那些坚持使用Java5的人来说,他们还发布了一个“guava-jdk5”工件

不幸的是,我的一些依赖关系过渡地引入了Guava11.0.2。这使得我的项目同时包含番石榴-jdk5和番石榴

通常,当我有冲突的版本时,我可以使用“dependencymanagement”标记来指示要拉入哪个版本。但由于这是两个不同的工件,我不明白如何做到这一点。最后我想告诉maven,番石榴和guava-jdk5是同一个工件,我想使用17.0版本的guava-jdk5。我该怎么做

谢谢

一个简单的方法是使用链接中的一个简单的外壳:

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

...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:

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

...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:

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

...
示例项目a
项目A
1
编译
示例项目B
B项目
一个简单的方法是使用链接中的一个简单的外壳:

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

...
示例项目a
项目A
1
编译
示例项目B
B项目


有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的事情还不可能:@jasonompson,谢谢你的澄清,我现在明白你的意思了。有没有办法在全球范围内做到这一点?我希望我的java 5项目总是排除guava,但是如果java 6项目使用这些java 5项目中的一个,那么我希望guava-jdk5从中排除。如果某个依赖项在某一天传递性地引入番石榴,但在下一个版本中没有,我的pom中可能会有一个不必要的排除项。我宁愿告诉maven,对于这个项目,我永远不想让guava在其中,或者guava-jdk5提供guava。@JasonThompson,您可以使用@Vic在全局级别(root pom.xml)指定排除,我不希望排除适用于所有依赖项,而不仅仅是某些依赖项。我做了一些研究,看起来我想做的还不可能:@JasonThompson,谢谢你的澄清,我现在明白你的意思了。显然这是不可能的。显然这是不可能的。显然这是不可能的。显然这是不可能的。