在我们开发过程中可能会遇到jar包下载不下来的问题,这个问题如果只是通过刷新 idea 的 maven 插件很难看出来是什么问题,最多就是看到我们依赖了某个仓库,而这个仓库我们链接不上,大致情形如下:
其实我们已经知道,这个仓库目前已经不可以使用了,但是我们却不知道是哪里配置了这个仓库。
这时候直接分析这个截图我们很难弄明白是哪里导致的问题,这时候我们可以通过执行 maven 的命令来看看到底是在获取哪一个依赖的时候出错了,maven会把详细的出错位置指出来供我们来分析问题。
在 terminal 里面执行如下代码:
mvn clean package -DskipTests
出错详细信息如下:
[ERROR] Failed to execute goal on project test-admin:
Could not resolve dependencies for project com.testplatform.test:test-admin:jar:1.0.127-SNAPSHOT:
Failed to collect dependencies at com.testplatform.test:test-user-api:jar:1.0.7:
Failed to read artifact descriptor for com.testplatform.test:test-user-api:jar:1.0.7:
Could not transfer artifact com.testplatform.test:test-platform:pom:1.1.6 from/to nexus (http://198.58.99.191:9091/nexus/content/groups/public/):
Transfer failed for http://198.58.99.191:9091/nexus/content/groups/public/com/testplatform/test/test-platform/1.1.6/test-platform-1.1.6.pom:
Connect to 198.58.99.191:9091 [/198.58.99.191] failed: Operation timed out (Connection timed out) -> [Help 1]
从上面的报错错信息我们就可以清楚的看到我们在执行命令的时候,获取com.testplatform.test:test-admin:jar:1.0.127-SNAPSHOT:项目依赖的时候失败了,这个依赖是test-user-api:jar。失败的原因是本身test-user-api:jar它还依赖了另一个jar:test-platform.jar,而test-platform.jar无法从仓库http://198.58.99.191:9091/nexus/content/groups/public/中获取。错误的原因是链接超时【Operation timed out】。
根据这个提示我们可以知道问题大致是这样的,我们的项目 test-admin 依赖了一个 test-user-api 包,而 test-user-api 本身又依赖了 test-platform。因为 test-platform 无法从指定仓库中获取最终导致 mvn clean package -DskipTests
命令执行失败,因为别的地方没有配置过 198.58.99.191:9091这个仓库地址,所以我们可以推断出配置这个仓库地址的项目就是: test-user-api。
因为我们已经知道 198.58.99.191:9091 仓库已经不存在了,所以我们要解决这个问题就需要把 test-user-api 中配置了 198.58.99.191:9091 仓库的地方给找到删掉或者替换为新的仓库地址,同时把版本进行升级。
总结:
解决依赖的问题我们需要通过命令行来给我们输出具体的出错位置及原因,然后我们要仔细分析错误然后解决就可以了。