当前位置: 首页 > 知识库问答 >
问题:

当我没有在Maven的pom中指定它时,版本会是什么。xml?

聂奇
2023-03-14

最近我用maven写了一个项目,但是我有一个关于maven版本的问题pom.xml.

如果我写这样的依赖

<dependency>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
     <!--No version here-->
</dependency>

版本会是什么

>

作为另一个项目中的依赖项,该项目使用foo-bar-1.0.0

共有1个答案

公良阳波
2023-03-14

第一部分。关于你的问题:如果你不指定一个版本,会有各种不同的结果:

a)你会得到一个错误...

[ERROR]   The project org.example:myproject:0.5-SNAPSHOT (D:\src\myproject\pom.xml) has 1 error
[ERROR]     'dependencies.dependency.version' for foo:bar:jar is missing. @ line 39, column 14

b) 如果您已经在项目父项目的pom的依赖项管理中定义了版本,那么将采用该版本。项目的父项目不必是封闭的超级项目。它可以只是一个适当定义的集合。

c) 如果项目的另一个依赖项也依赖于foo:bar,并指定了一个版本,则采用该版本。Maven 2有一种称为传递依赖的机制。如果没有为工件显式指定依赖项的版本,它将搜索依赖项树并使用树中最近的定义。如果有两个最接近的定义,那么第一个声明获胜(自maven 2.0.9以来)。

第二部分:我不确定,但是可能传递依赖机制也是这样工作的。但是留档(据我所知)没有提到这种情况。

但不知何故,我觉得你问题的第二部分没有意义:我想为了使用工件作为依赖项,你必须先构建它。因此,在将依赖项本身用作依赖项之前,您必须了解依赖项的版本。

 类似资料:
  • 问题内容: 最近,我用maven编写了一个项目,但是我对maven pom.xml中的版本有疑问。 如果我写这样的依赖 版本是什么 在一个简单的项目中,没有子项目 作为另一个项目的依赖项,并且该项目使用foo-bar-1.0.0 问题答案: 问题的第1部分:如果不指定版本,则会有各种不同的结果: a)你会得到一个错误… (D:\src\myproject\pom.xml) has 1 error

  • 问题内容: 我得到了一个maven项目来编译并部署在tomcat服务器上。今天以前我从未使用过Maven,但是我已经使用了很多Google搜索功能。似乎此项目中的顶级文件的打包类型设置为。 部署此应用程序后我应该怎么做?我原本希望能够在某处或某处找到文件,但是我想我在错误的位置查找或缺少一步。 问题答案: 基本上是子模块的容器,每个子模块由与包装相同目录中的子目录表示。 嵌套在项目结构中的某个地方

  • 我有Maven 3. x. x和定义的MAVEN版本插件在~/. m2/settings.xml(全球用户级文件),我有有效的... (在引用父项目的这些子项目之间使用Maven继承和聚合) 项目结构: 当我在这个多模块项目设置中运行以下命令时: 它成功地更改了父级(项目根级pom.xml)和子项目/模块级pom中出现的所有0.0.1-SNAPSHOT。xml文件,但未对以下文件进行更改: 问题:

  • 我正在寻找关于这个案例的解释:我有一个项目,它有一个dependencyManagement/dependencies部分,其中包含: myproject/pom。xml: spring cloud starter父pom定义: 这样,我的项目将获得SpringCloudStarterEureka版本1.1.0。构建快照。 我期望,如果我在myproject/pom.xml一个属性部分添加另一个版

  • 问题内容: 当Maven生成JAR文件时,它将模块的POM文件放在内部(似乎在目录 / 中)。 当我从Ant构建一个JAR文件以通过Maven Ant任务进行部署时,此POM文件(JAR内部的一个)的存在重要吗?它似乎没有,但是我只是想确保它没有在任何地方使用,并确认它应该在JAR文件中的确切位置。 问题答案: 在和文件打包在JAR以便由Maven的生产的每个工件是自描述的,也可以让你在使用自己的

  • 几年前我安装了Java版本10.0.2,但为了特定的目的需要将其更新到11.0.2(不是最新的版本13.0.2,我需要它是11.0.2)。 下载JDK-11.0.2之后,我打开了环境变量窗口,并进行了如下更改。 添加新路径