当前位置: 首页 > 面试题库 >

如果我在Maven的pom.xml中未指定版本,它将是什么版本?

章昊
2023-03-14
问题内容

最近,我用maven编写了一个项目,但是我对maven pom.xml中的版本有疑问。

如果我写这样的依赖

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

版本是什么

  1. 在一个简单的项目中,没有子项目

  2. 作为另一个项目的依赖项,并且该项目使用foo-bar-1.0.0


问题答案:

问题的第1部分:如果不指定版本,则会有各种不同的结果:

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起)。

第2部分:我不确定,但是传递依赖机制也可以那样工作。但是文档(据我了解)没有提到这种情况。

但是某种程度上我觉得问题的第二部分没有意义:我想为了将工件用作依赖项,您必须先构建它。因此,您必须先了解依赖项的版本,然后再将其用作依赖项本身。



 类似资料:
  • 最近我用maven写了一个项目,但是我有一个关于maven版本的问题pom.xml. 如果我写这样的依赖 版本会是什么 > 作为另一个项目中的依赖项,该项目使用foo-bar-1.0.0

  • 我编写了一个没有父级的简单pom.xml来尝试这个方法,因此不涉及pluginManagement。我还检查了maven-model-builder中的super super pom-4.0.0.xml以确认maven-bundle-plugin不存在。此插件版本没有指定在任何地方。 maven如何确定采用哪个版本?

  • 将Java11指定为Spring(或Spring Boot)pom.xml文件中使用的版本的正确方法是什么? 例如,我需要在POM的属性中放入什么值? 对于Java8,我们使用,正如文档所示,对于Java9,我们使用。 我不确定Java11是否是(尽管这似乎不太可能),并且在使用时,我看到它被指定为,但我没有使用编译器插件。 例如。 我到处找都找不到答案,因为几乎所有我读过的文档以及与Java版本

  • 问题内容: 更新: 这是我的maven-compiler-plugin配置: 我使用Maven构建一个多项目应用程序。我们决定添加AspectJ,因此我在顶级项目中添加了以下代码:(来自官方文档) 以及每个下属项目的以下片段: 某种程度上,此修改已覆盖了我使用的Java版本。如果我运行构建,则会收到多个错误,如下所示: 语法错误,仅当源级别为1.5或更高时,注释才可用 这使我怀疑我的Java版本(

  • 问题内容: 我在netbeans上编写了一个Maven代码,大约有2000多行。当我在netbeans上编译它时,一切都很好,但是如果我想在命令行上运行它,则会出现以下错误: 我尝试使用Java 1.3.1,编译器错误,但出现了更多错误。我从其他帖子中发现我应该修改pom.xml,但我不知道如何。这是我的pom.xml 如果您能帮助我,那就太好了。 问题答案: 请参阅配置页面以获取Maven编译器

  • 我用Netbeans编写了一些Maven代码,大约有2000多行。当我在Netbeans上编译它时,一切都很好,但如果我想在命令行上运行它,我会得到这些错误: 我尝试使用Java 1.3.1,编译器错误,但我得到更多的错误。我从其他帖子中发现我应该修改,但我不知道如何修改。下面是我的 如果你能帮我就太好了!