【问题标题】:How do I know which project is requesting a specific jar from Maven我如何知道哪个项目正在向 Maven 请求特定的 jar
【发布时间】:2015-05-22 23:11:53
【问题描述】:

我正在使用 Eclipse,最近升级了我的所有项目以使用最新版本的库。 但是在 Maven 存储库中,我仍然可以看到该库的旧版本。 我已经从 Maven 存储库中手动删除了旧库,但它不断回来。 我确信 Eclipse 中的所有项目都指向新版本:我检查了我所有的 pom.xml,我使用了“依赖层次结构”工具等。

有没有办法知道哪个项目告诉 Maven 下载旧版本的库?

非常感谢!

【问题讨论】:

    标签: java eclipse maven jar pom.xml


    【解决方案1】:

    你可以使用Maven dependency plugin的树目标:

    mvn dependency:tree
    

    并使用includes 选项进行过滤,该选项使用[groupId]:[artifactId]:[type]:[version] 模式。

    【讨论】:

      【解决方案2】:

      回复:“我有很多”。在最顶层目录执行以下操作:

       find . -name "pom.xml" -type f -exec mvn dependency:tree -f {} ';' | grep '^\[.*\] [-+\\\|].*'
      

      语法细节可能因 Bash 而异。

      提示:首先在最底层的项目目录中尝试一下,以确保它按预期正常运行。由于您有许多项目,可能需要一段时间才能完成并识别可能的错误。

      【讨论】:

      • 谢谢你们,感谢帮助,但我在工作中使用 Windows,不允许安装任何软件(我在考虑 Cygwin)
      【解决方案3】:

      您可以使用以下命令获取所有依赖项的树,然后找出特定工件的来源。

      如果您使用的是基于 linux/unix 的操作系统,则可以使用 grep 管道以仅显示相关的。

      mvn dependency:tree
      

      【讨论】:

        【解决方案4】:

        谢谢大家,感谢,但这肯定不是一个简单的方法。看起来您必须逐个项目进行(我有很多)。加上我在其他文件夹中的大部分 pom 引用 pom,它也无法处理。

        【讨论】:

        • 只是为了每个人的利益:pom 交叉引用的问题是由于缺少 标记,这在过去从来不是问题,但它是依赖关系:树目标所必需的。
        猜你喜欢
        • 2019-11-11
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 2021-06-10
        • 1970-01-01
        • 2011-11-10
        • 2016-01-12
        • 1970-01-01
        相关资源
        最近更新 更多