【问题标题】:What does it mean to omit the <version> element in a Maven <dependency>? [duplicate]在 Maven <dependency> 中省略 <version> 元素是什么意思? [复制]
【发布时间】:2014-12-15 16:06:58
【问题描述】:

pom.xml 我有:

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>bar</artifactId>
</dependency>

没有&lt;version&gt; 元素。但是当我运行这个时:

> mvn dependency:list
...
[INFO]    com.foo:bar:jar:1.2.3.RELEASE:compile

它给了我一个版本,即1.2.3.RELEASE

Maven 遵循哪些规则来确定该版本?省略&lt;version&gt; 元素是什么意思?

【问题讨论】:

  • @lexicore 也许——尽管这个问题不太清楚,而且没有答案。另外,我没有定义版本的&lt;dependencyManagement&gt; 部分。
  • 它被回答了两次,但由于某种原因,没有一个答案被接受。请检查 coderplus 的答案,您可能在某处的父 pom 中有它。
  • 哦——显然版本是由 &lt;dependencyManagement&gt; 部分管理的,用于不同的依赖项,而 &lt;dependencyManagement&gt; 部分又定义了 bar 的版本。疯狂的。谢谢。
  • 这听起来不太好。不应该是。只有父母应该算数。运行mvn -X dependency:tree
  • @lexicore 具体来说,模块是spring-framework-bom。显然这就是它的设计方式。

标签: maven


【解决方案1】:

&lt;dependencyManagement&gt; 部分中,我包含了一个模块,该模块在其&lt;dependencyManagement&gt; 部分中定义了bar 的版本,即我的pom.xml 看起来像:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.foo</groupId>
            <artifactId>qux</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>bar</artifactId>
</dependency>

pom.xml 包含的模块qux 在版本1.2.3.RELEASE 看起来像:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.foo</groupId>
            <artifactId>baz</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

显然,&lt;dependencyManagement&gt; 部分是可传递的,因此该模块中为 baz 定义的版本被嵌入到我自己的模块中。

【讨论】:

  • 你回复的内容只对你自己有意义。
猜你喜欢
  • 2011-11-05
  • 2012-12-09
  • 2013-06-14
  • 1970-01-01
  • 2020-10-27
  • 2015-07-15
  • 2018-07-17
  • 2012-08-13
  • 2013-07-15
相关资源
最近更新 更多