一次Maven项目编译失败的分析过程

来源:互联网 发布:jquery.ajaxqueue.js 编辑:程序博客网 时间:2024/05/01 15:12

在执行 mvn clean compile 命令时,抛出了如下

这里写图片描述

当前编译的是account-service模块,该模块有依赖同一项目下的其他模块,但这里却说找不到 account-parent 模块的 artifact(account-parent是父模块,其他是子模块),

首先,怀疑是不是account-parent模块需要先编译打包好,但按理说,如果已经在pom里声明了parent节点,是不需要再手动一个模块一个模块的去编译,maven会为你做这些事的,但无奈没有头绪,于是去到account-parent模块下执行 mvn clean install 一下,一切正常,再回来编译account-service,问题依旧。但我们已经排除了account-service依赖的模块需要手动编译的假说!

问题还是要解决的,终端上显示的这一行ERROR似乎再过简洁,可以在命令后加上 -e 参数来查看 full stack trace,由于很长,我这里只截取其中一部分,纵然如此,并没什么用,只是重复的说 could not find, could not find, could not find balabalabala………..

这里写图片描述

接着再进一步,将 DEBUG log 信息打印出来,这次更多了,耐心从上往下看,终于发现了一些端倪,如下图:

这里写图片描述

“Could not find metadata com.searover.mvnbook.account:account-parent:1.0.0-SNAPSHOT/maven-metadata.xml in local (/Users/searover/.m2/repository)”

说得已经很明确了,就是找不到。我明明已经install成功了,怎么可能找不到,为了验证这句话,我决定亲自去该目录下看看,

这里写图片描述

结果,终于发现了问题,原来出在版本号上,它要找的是 1.0.0-SNAPSHOT,而本地仓库里安装的却是1.0-SNAPSHOT,难怪找不到,然后仔细检查一下项目中的几个模块,惊讶的发现有的模块声明的version是1.0.0,而有的是1.0,杂乱无章,如此随意,难怪掉坑里爬不出来。

改正之后,项目就顺序通过编译了:

这里写图片描述

反思:论细节的重要性!

0 1
原创粉丝点击