我如何知道为特定工件指定快照版本的位置?
How can I tell where a snapshot version is being specified for a particular artifact?
我正在使用 Maven 3.5.2 和 Java 8.
我正在处理一个项目,我现在在该项目的桌面构建中获得以下内容:
Could not find artifact ::jar:2.2.0-SNAPSHOT in ...
如果我查看我们的 Intranet Nexus 存储库,我会看到此工件的版本“2.2.0”,但不是 2.2.0-SNAPSHOT。我们的快照工件在一段时间后就会过期,这样的问题时有发生。我们 CI 服务器上的构建没有失败,因为 CI 服务器上的本地 maven repo 在每次构建之前都没有被清除(我已经提到过这应该发生),所以那个版本该工件在该本地 Maven 仓库中。事实上,我今天早上早些时候在我的桌面本地 maven 存储库中有这个工件的那个版本,但不幸的是,我在尝试调试这个最初由另一个用户报告给我的错误时删除了它。
在我们的应用程序 pom 中,我们根本没有指定这个工件。它在父 pom 中指定。在该父 pom 中,未指定版本。
我想弄清楚的是,这个工件的“2.2.0-SNAPSHOT”版本是在哪里指定的。我想也许 "dependency:tree" 会这样做,但不幸的是,如果这个插件不能解决所有的依赖关系,它就不会打印树,这就是在这种情况下发生的情况。
我可以在 Eclipse 中查看父 pom,在 "Dependencies" 选项卡中,它显示带有“(managed:2.2.0-SNAPSHOT)”的工件。该父级 pom 没有父级。
所以如果这个版本是 "managed",我怎么知道是什么在管理它?我可以在命令行使用 mvn 或 Nexus gui 来告诉我指定此版本的内容吗?
更新:
我已经知道 "dependencyManagement" 部分是通常为 "other poms" 指定版本的地方,但我已经在整个 pom(应用程序和父级)中查找了这个版本规范), 没找到。
这里的第一个答案让我意识到我需要查找 BOM 工件(物料清单),它们仅用于指定工件组的版本。
当我最终查看父 pom 的 dependencyManagement 部分时,我看到它引用了一个 BOM 工件,当我访问该工件时,我找到了指定的版本。
所以现在,我想知道 Maven(或 eclipse m2e)中是否有任何东西可以告诉我我必须挖掘才能找到的东西。我感觉答案是否定的。
"managed" 工件的版本由 <dependencyManagement>
确定。 dependencyManagement 可能在您的 POM 或父 POM 中。此外,它可能包含带有 <scope>import</scope>
的元素,这意味着从指定的 POM 导入更多条目。
我正在使用 Maven 3.5.2 和 Java 8.
我正在处理一个项目,我现在在该项目的桌面构建中获得以下内容:
Could not find artifact ::jar:2.2.0-SNAPSHOT in ...
如果我查看我们的 Intranet Nexus 存储库,我会看到此工件的版本“2.2.0”,但不是 2.2.0-SNAPSHOT。我们的快照工件在一段时间后就会过期,这样的问题时有发生。我们 CI 服务器上的构建没有失败,因为 CI 服务器上的本地 maven repo 在每次构建之前都没有被清除(我已经提到过这应该发生),所以那个版本该工件在该本地 Maven 仓库中。事实上,我今天早上早些时候在我的桌面本地 maven 存储库中有这个工件的那个版本,但不幸的是,我在尝试调试这个最初由另一个用户报告给我的错误时删除了它。
在我们的应用程序 pom 中,我们根本没有指定这个工件。它在父 pom 中指定。在该父 pom 中,未指定版本。
我想弄清楚的是,这个工件的“2.2.0-SNAPSHOT”版本是在哪里指定的。我想也许 "dependency:tree" 会这样做,但不幸的是,如果这个插件不能解决所有的依赖关系,它就不会打印树,这就是在这种情况下发生的情况。
我可以在 Eclipse 中查看父 pom,在 "Dependencies" 选项卡中,它显示带有“(managed:2.2.0-SNAPSHOT)”的工件。该父级 pom 没有父级。
所以如果这个版本是 "managed",我怎么知道是什么在管理它?我可以在命令行使用 mvn 或 Nexus gui 来告诉我指定此版本的内容吗?
更新:
我已经知道 "dependencyManagement" 部分是通常为 "other poms" 指定版本的地方,但我已经在整个 pom(应用程序和父级)中查找了这个版本规范), 没找到。
这里的第一个答案让我意识到我需要查找 BOM 工件(物料清单),它们仅用于指定工件组的版本。
当我最终查看父 pom 的 dependencyManagement 部分时,我看到它引用了一个 BOM 工件,当我访问该工件时,我找到了指定的版本。
所以现在,我想知道 Maven(或 eclipse m2e)中是否有任何东西可以告诉我我必须挖掘才能找到的东西。我感觉答案是否定的。
"managed" 工件的版本由 <dependencyManagement>
确定。 dependencyManagement 可能在您的 POM 或父 POM 中。此外,它可能包含带有 <scope>import</scope>
的元素,这意味着从指定的 POM 导入更多条目。