【问题标题】:Resolving Maven effective dependencies for a specific point-in-time解决特定时间点的 Maven 有效依赖关系
【发布时间】:2014-01-22 09:21:12
【问题描述】:

我正在编写一个“编译器插件”,并使用 Maven 作为构建系统。大约一周前,我有一个(第一个)工作版本,并签入了代码。如果我今天重建那个版本,它就不再工作了,所以我的第一个怀疑是某些(间接?)的版本发生了变化依赖。是否有 Maven 插件,可以比较两个不同时间点(现在和“一周前”)之间 POM 的有效依赖关系?

换一种说法,是否有可能找出何时某个特定版本在 Maven 存储库中可用?

【问题讨论】:

  • 你在 pom 中指定依赖的版本;他们不会改变。 (?)
  • 什么样的编译器插件?什么目的?除此之外,如果您正确定义了带有发布的版本,它们将永远不会改变。如果您使用过 SNAPSHOT,那就另当别论了。
  • @BrianRoach 如果您依赖快照版本甚至发布版本,他们可以,如果 repo 允许更新发布版本(这可以通过 Nexus),那么传递依赖关系可能会改变。
  • 猜测您将无法恢复依赖项更改,即使您愿意,所以您也可以修复代码。为了将来参考,请确保您在 settings.xml 的存储库中将 updatePolicy 设置为 never。这样至少在您选择使用 -U 选项之前,您的本地副本不会更改。
  • @BrianRoach AFAIK 仅当您指定所有内容的确切版本时。即使我只指定了 direct 依赖项的确切版本(我还没有),但那些有自己的依赖项的“范围”,这是我的间接依赖项,然后是“自动 Maven 更新" 可以拉取刚刚发布的新版本。

标签: java maven dependencies


【解决方案1】:

好吧,这并不是我真正想要的,但假设没有办法真正做到这一点,我找到的最接近的是这个;查看本地 Maven 存储库中文件的日期:

cd <user-home>/.m2/repository

$ find . -type f -name "*.jar" -mtime -<how-many-days-ago-did-it-still-work>

并将其与“mvn依赖:列表”进行比较

就我而言,似乎没有任何相关(除了我自己的项目 jars)发生变化,所以我可能可以将 Maven 从“可疑名单”中删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多