Maven问题:Could not find metadata org.junit.jupiter:junit-jupiter-api/maven-metadata.xml

遇到这么一个问题。有一个Maven项目,在互联网环境下,下载jar包后,构建是成功的,但将这些下载后的jar文件移到无互联网的局域网中构建,就会报这个错。

如图:

很明显,如果是互联网,或者局域网内有nexus私库的,那么遇到这个问题应该是将库文件删了重新构建。但如果是已经完全是使用本地库,还需要这个问题,那么可以用我发现的这个方法试一试:

根据提示,我在本地库文件中将maven-metadata-aliyun.xml复制了一份出来,重命名为maven-metadata.xml,构建还是失败。

偶然的,我执行了如下操作,使构建又能成功了。

前提:在无互联网的局域网中。

1、首先编辑Maven的settings,将mirror中的互联网镜像去掉,换上本地的。比如:

<mirror>
    <id>central</id>
    <mirrorOf>*</mirrorOf>
    <name>central</name>
    <url>file://D:\java\localRepository</url>
</mirror>

另外有一个offline参数,我不知道有没有影响,尝试以下操作时我是设置为true的。

2、在maven-metadata.xml同目录结构下有一个resolver-status.properties文件,删掉它,执行构建。当然这一次还是会失败,但是resolver-status.properties会被再次生成,查看以下内容,我的里面内容有这么一个文件的描述:maven-metadata-central.xml

3、将原有的maven-metadata-aliyun.xml复制一份,重命名为resolver-status.properties中的文件名,比如我这里就是重命名为maven-metadata-central.xml。

4、再次构建,问题已经解决。

这里要注意的是,第一步里我有一个删除resolver-status.properties的操作,原因是有时候下载来源不是maven中心库或者阿里云库这么简单,可能Maven项目的依赖原本就来源于某公司的Nexus的私库,那么resolver-status.properties中有可能是自定义的私库地址。删掉了会重新建立resolver-status.properties,那么缺少的maven-metadata是哪一个,就一目了然了。

遇到这个问题可能是我对Maven了解的不够深入,具体产生的原因其实我是没搞清楚的。说不定各位大神有更好的解决办法(比如禁止Maven每次构建下载metadata.xml等,这我也在网上看到过)。

原文地址:https://www.cnblogs.com/wang-ze/p/13753010.html