这个问题困扰了我很久,一直无法解决;我在虚拟机里面按照同样的步骤配置了三次maven项目,每次都能成功;可一旦到外面maven项目总是创建失败,输入mvn help:system总是出现No plugin found for prefix 'help' in the current project and in the plugin groups
这里记录了我所有的思考过程,想直接查看解决方案的可点击这里:解决方案
先说一下物理机环境:
OS:Win10家庭中文版
JDK:1.8(这里一定一定要注意JDK的版本,不要太高否则就算配置完成了项目可能也跑不起来)
Maven:3.8.1
起初我以为是操作系统的问题,因为在搜索的时候看到的确有很多人重装系统最后配置成功了,而且我虚拟机中的操作系统是Win10专业版;但电脑中重要的东西实在太多了,这个方案最先被我PASS;
也有很多人说是*仓库镜像的问题,配置成阿里的就好了,这个方式我也试过,但还是一样的问题;仍然是No plugin found for prefix 'help' in the current project and in the plugin groups,期间我还试过华为的镜像等,不仅如此,我还尝试着翻了一下,结果全部失败;
再后来我看到了另外一种解决方案,这里把链接放一下
https://blog.csdn.net/qq_37537009/article/details/107714349
按照这种方式是试了几次确实成功了,但进入IEDA后无法下载JAR包,一直都在报错;
我思考了一下觉得问题还是出在No plugin found for prefix 'help' in the current project and in the plugin groups上,于是我在Google上查了一下,关于这个错误几乎没有什么有价值的信息,我相信能够看到这里的诸位应该深有体会;
这个贴子里的这段话给了我启发
大致意思就是help代表了一个特定的前缀的插件,在构建项目时首先会从本地的仓库找起,如果找不到,会跑到配置的镜像中去查找,如果找不到便会报出构建失败;
下面是答主给出的两个可能原因:
1、本地仓库的文件损坏了;
2、无法连接远程仓库,基本上大多是网络连接问题;
说实话我只是看到教程中有这样一个步骤,我试了,报错了,然后就没然后了 ,于是我搜索了一下这个命令,我自己的理解就是;
运行这个命令时,会对Maven构建项目所必须一些JAR进行下载,这些JAR在我们的pom.xml文件中也能够见到
这个时候我觉得其实问题的原因无外乎有这样几种:
1、Maven在我配置的*仓库镜像中找不到这些JAR;
2、网络问题;
说实话其实这两个原因我觉得都像是在开玩笑一样,因为这些JAR怎么会在阿里或者华为的仓库中找不到呢?应该是很基本的JAR啊,
再说网络问题,*仓库镜像说实话换了太多了,翻也翻了,怎么可能有问题呢?最关键的是我在虚拟机中配置的Maven仅仅就更改了本地仓库的路径,也没去配置仓库镜像,也一样成功了啊;
还是这个帖子,最后的一个回帖给我带来了第三种可能:
我尝试搜索了一下这个maven-compiler-plugin 网上说这是一个编译插件,简单说就是指定所编译的JDK版本,看起来文不对题,但是我开始考虑是不是因为JDK的问题;
于是我跑到setting.xml中配置了一下JRE
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
设置完毕之后一定不要忘记两件事:
1、保存修改后的配置文件,重新打开CMD
2、在本地仓库的路径下进入CMD运行下面这段代码
for /r %i in (*.lastUpdated) do del %i
上面两件事完成后,我重新输入了mvn help:system,竟然开始下载了。
但还没高兴太久,报出了异常;这里我忘记了截图,说是Failed to execute goal...;
我查看了一下好像是和JRE版本有关的异常,第一反应告诉我是由于刚才的设置,但是开始下载是件好事,可这里就矛盾了;如果因为我的设置才开始下载的话,报错又是怎么回事呢?下载和配置JRE又有什么关系呢?
我想不太明白,于是跑到本地仓库,直接清空了仓库,全部删除。希望能够复现Failed to execute goal...,但有意思的现象出来了,
当我输入mvn help:system,这次并没有开始下载,而重新报出了No plugin found for prefix 'help' in the current project and in the plugin groups。
这个时候我又一次陷入沉思No plugin found for prefix 'help' in the current project and in the plugin groups,找不到插件,找不到插件,
行,如果非要说国内仓库找不到,那我去你们官方的仓库里去找好了吧。
解决方案
为了防止国外镜像速度过慢或者连接不稳定我首先翻了一下,这里我不确定我的成功与这个有没有关系
一、maven配置文件的配置
maven的配置文件我进行了三项设置,这里设置的填入位置网上都有很详细的教程,就不多赘述了:
1、配置本地仓库路径
<localRepository>D:\Software\Java\maven_repertory</localRepository>
2、配置*仓库镜像
<mirror>
<id>repo1 Maven</id>
<name>all repository mirror</name>
<mirrorOf>*</mirrorOf>
<url>https://repo1.maven.org/maven2</url>
</mirror>
3、配置JRE
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
二、打开cmd
由于我们使用了国外镜像,因此存在ssh证书校验的问题,因此需要在原有命令的基础上加一些东西
mvn help:system -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.valid
敲击回车,可以看到开始下载
构建成功
三、IDEA设置
mvn help:system成功执行实际上只是最基础的一步,我们的最终目的还是要保证项目中引用的JAR都能够被成功下载
IDEA版本
将下面这段代码填入,其实就是我们cmd中后面加上的那一段代码
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.valid
点击IDEA右方的Maven,按照顺序点击这四个按钮
这里一定要注意,多使用CMD,打开本地仓库,清理未下载完成的JAR包,有时候可能会出现个别的JAR无法下载的情况,不用着急,重启以下IDEA,清理本地仓库未下载完成的JAR,然后重复上面的步骤即可
使用CMD清理未完成的JAR包;
一定要在本地仓库所在的目录下,一定要在本地仓库所在的目录下,一定要在本地仓库所在的目录下
for /r %i in (*.lastUpdated) do del %i
到这里我终于解决了这个困扰我的问题,每个人可能在配置Maven时遇到的问题都不太一样,其中我也有比较心急的时候,但一味的着急并不能解决问题,希望大家具体问题具体分析,比如我遇到的问题,我猜想大概率是配置*仓库以及网络两方面的问题,解决了这两个问题,一切自然迎刃而解。还有最重要的一点,猜测永远都是猜测,不能完全相信,每一条报错信息都包含着巨大的价值。我最忽视No plugin found for prefix 'help' 到最后点醒了我。