在maven中下载兼容的依赖项

时间:2015-08-18 17:08:50

标签: java maven

支持我在我的pom文件中使用spring 4.0,我想使用junit。在这种情况下,如何声明junit依赖项以下载与给定spring版本兼容的,而不指定任何特定的junit版本。这可以是我以junit为例的任何依赖。

2 个答案:

答案 0 :(得分:1)

在Maven中有两种可能匹配的东西。首先是人工制品本身的依赖管理。 spring-core:4.2.0定义它依赖于commons-codec:1:10。因此,当你想要使用commons-codec时,你也无需做任何事情,因为它已经在你的类路径中。它没有定义JUnit,所以它不依赖于它,并且应该与所有版本兼容。

第二件事是BOM pom。这用于将许多依赖项打包在一起,让用户选择他需要的东西,但是bom已经为你定义了版本(因此它们应该是兼容的)。特别是春天在回购中有一些这样的炸弹。

例如spring-framework-bom打包了与弹簧相关的所有内容,你可以在你的应用程序中使用它,但是你将定义你需要哪些部分,而不是用子依赖项的版本号来打扰自己。

例如,我想使用spring 4.2并且需要webmvc jdbc的东西以及用于spring测试的东西。所以将定义这个:

<dependencymanagement>
    <dependencies>
        <dependency>
            <groupid>org.springframework</groupid>
            <artifactid>spring-framework-bom</artifactid>
            <type>pom</type>
            <version>4.2.0.RELEASE</version>
            <scope>import</scope>
        </dependency>
    <dependencies>
</dependencymanagement>
<dependencies>
    <dependency>
        <groupid>org.springframework</groupid>
        <artifactid>spring-webmvc</artifactid>
    </dependency>
    <dependency>
        <groupid>org.springframework</groupid>
        <artifactid>spring-jdbc</artifactid>
    </dependency>
    <dependency>
        <groupid>org.springframework</groupid>
        <artifactid>spring-test</artifactid>
        <scope>test</scope>
    </dependency>
</dependencies>

答案 1 :(得分:0)

这个问题确实没有意义。如果spring 4.0依赖于JUnit(你不会说你指的是哪个spring模块),JUnit(或任何其他依赖项)将自动包含在你的依赖项中,因为它将从spring 4.0继承而来您已经声明的依赖项,版本将匹配Spring模块在其POM中声明的任何版本。

但是,您的特定Spring 4.0依赖项似乎不依赖于JUnit,因此在这种情况下,您可以选择哪个版本适合您的要求。

您可以通过运行以下命令来查看项目中当前包含的依赖项(显式和继承):

mvn dependency:list

这将追溯依赖关系树并向您显示项目中当前包含的所有依赖项。