Ubuntu 18.04 LTS下Maven执行archetype:generate无法下载插件求助
解决Ubuntu 18.04下Maven执行
mvn archetype:generate的证书与反射警告问题 我来帮你搞定这个问题,你碰到的情况其实是Ubuntu 18.04里OpenJDK搭配Maven时的常见问题,分为两个部分:一个是Guice库的非法反射访问警告,另一个是导致插件下载失败的核心CA证书配置异常(就是报错里的trustAnchors parameter must be non-empty)。下面一步步来解决:
一、先修复Java CA证书配置(核心问题)
通过apt安装的OpenJDK经常会出现证书存储路径不对的情况,导致Java没法验证HTTPS仓库的证书,直接让Maven没法下载插件。解决步骤:
- 先确认你的Java安装路径,执行这条命令:
update-alternatives --list java
输出一般类似/usr/lib/jvm/java-8-openjdk-amd64/bin/java或者/usr/lib/jvm/java-11-openjdk-amd64/bin/java,记下来这个路径里的/usr/lib/jvm/java-xxx-openjdk-amd64部分。
- 先备份原来的Java证书文件(以防万一):
# 把下面的java-8-openjdk-amd64换成你自己的路径 sudo cp /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts.bak
- 重新安装并同步系统CA证书到Java:
sudo apt-get install --reinstall ca-certificates-java
这个包会自动把系统的可信证书同步到Java的cacerts文件里,解决证书验证失败的问题。
- 现在再试试执行
mvn archetype:generate,应该就能正常下载插件,不会再出现那些“Failed to retrieve plugin descriptor”的错误了。
二、消除Guice反射警告(可选,不影响功能)
那个反射警告是因为Maven自带的Guice版本和Java 9+的模块系统不兼容,虽然不影响使用,但看着闹心的话可以用下面两种方法解决:
方法1:升级Maven到新版本
新版本的Maven(比如3.6.3及以上)已经修复了这个兼容问题,手动安装步骤:
# 下载Maven 3.8.6(你也可以换成最新稳定版) wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz # 解压到/usr/local目录 sudo tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local # 配置环境变量,编辑~/.bashrc文件 echo 'export M2_HOME=/usr/local/apache-maven-3.8.6' >> ~/.bashrc echo 'export PATH=$M2_HOME/bin:$PATH' >> ~/.bashrc # 让环境变量生效 source ~/.bashrc # 验证版本是否更新成功 mvn -v
方法2:添加JVM参数临时消除警告
如果不想升级Maven,每次执行命令时加上下面的参数就行:
mvn archetype:generate --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED
这个参数允许Guice进行必要的反射访问,直接消除警告。
内容的提问来源于stack exchange,提问作者Alexandr
相关产品推荐
相关产品推荐

