• The pom for XXX is missing,no dependency information available


    笔者进行性能测试时,碰到如下问题

    性能测试代码编写,调试通过之后。使用cmd进入项目根目录,意图打包导出项目中所有的依赖包,以便导入至jmeter工具中

    cmd中使用命令:mvn dependency:copy-dependencies -DoutputDirectory=lib 。具体报错信息如下:

    根据报错信息可看出,四个jar包没有可用的dependency信息。随后返回项目中查看四个jar包的dependency,发现一切正常。再次运行了项目,发现能够正常运行,并未任何报错信息。
    为了进一步排除代码问题。将代码在另外一台机器执行,执行命令:mvn dependency:copy-dependencies -DoutputDirectory=lib  则完全ok

    经过以上操作后,通过分析,基本把问题定位在maven工具上。因为相同代码,不同机器上的执行结果不同,那么只能是maven工具问题。

    然后比对了两台机器上的maven,发现版本,配置文件均一致。

    这让我陷入了思考:代码,工具均一致,结果却完全不同。根据报错信息能看出,输出依赖包时,maven并未找到有效的jar包信息。那么maven识别有效的jar包信息,是根据配置文件来的,但两台机器的配置文件完全一致。那么很有可能,就是配置文件的路径问题

    想到这里,使用mvn -X查看debug日志,发现maven在读取配置文件时,优先读取maven环境变量配置的那个settings配置文件,而这个配置文件就是在%MAVEN_HOME%conf目录下。对比了两台机器,发现出错的那台机器上,安装包下的/conf/settings.xml文件中是最原始的文件(即没有任何配置信息),而IDEA中配置的是D:maven/settings.xml。至此,问题找到

    解决方案很简单,把可用的D:maven/settings.xml拷贝至%MAVEN_HOME%conf下,替换掉原来不可用的settings.xml,再次执行mvn dependency:copy-dependencies -DoutputDirectory=lib。执行成功

     后记:

    1.maven使用命令在输出依赖包时,有先寻找的是%MAVEN_HOME%confsettings.xml,当这个文件不存在或者是无效配置时,则再寻找 C:UsersXXX.m2settings.xml,如果还是无效或不存在,则报错

    2.maven在IDEA中则根据配置来。默认是C:UsersXXX.m2settings.xml。实际上很多使用人员都会修改该路径到其他目录

    建议:要么直接使用默认路径:C:UsersXXX.m2settings.xml;要么使用%MAVEN_HOME%confsettings.xml。

    3.至于本地仓库位置,可根据自己喜好,配置在settings.xml中即可

  • 相关阅读:
    机器学习回顾篇(14):主成分分析法(PCA)
    Elasticsearch系列---前缀搜索和模糊搜索
    Elasticsearch系列---近似匹配
    Elasticsearch系列---多字段搜索
    Elasticsearch系列---深入全文搜索
    Elasticsearch系列---shard内部原理
    Elasticsearch系列---结构化搜索
    01、Spring环境搭建
    02、Hibernate开发步骤
    01、Hibernate安装配置
  • 原文地址:https://www.cnblogs.com/xiuxingzhe/p/11289843.html
Copyright © 2020-2023  润新知