PrimeFaces 11.0.0源码release构建触发maven-gpg-plugin空指针报错
触发原因
这个空指针异常和PrimeFaces 11.0.0源码本身没有关系,是maven-gpg-plugin:3.0.1版本的已知缺陷:
- 插件在自动探测本地GPG程序路径时,如果没有找到可执行文件、或者读取到的路径为空,没有做非空校验就直接调用签名逻辑,就会抛出你看到的
NullPointerException,不会输出明确的"GPG程序不存在"的错误提示。 - 从日志里的Windows风格路径判断,大概率是本地没安装GPG工具,或者GPG安装路径带空格、环境变量配置不对,导致插件探测路径失败。
修复方法
按实际场景选对应方案即可:
- 基础环境校验:先在本地安装GPG工具,Windows系统安装Gpg4win,macOS执行
brew install gpg,Linux发行版用对应包管理器(比如apt、yum)安装gnupg包。安装完成后在命令行执行gpg --version,能正常返回版本信息再进行后续构建。 - 显式指定GPG路径:如果已经安装GPG还是报错,构建时直接通过参数传入gpg可执行文件的完整路径,跳过插件的自动探测逻辑,命令示例:
macOS/Linux系统可以先执行mvn clean install -Prelease -X -Dgpg.executable=C:\Program Files (x86)\GnuPG\bin\gpg.exewhich gpg拿到路径后替换上述命令里的路径值即可。 - 跳过签名步骤:如果只是本地编译验证、不需要发布构件到Maven中央仓库,可以直接跳过GPG签名环节,构建命令加参数即可:
mvn clean install -Prelease -X -Dgpg.skip=true - 升级/降级插件版本:如果必须走完整签名流程,可以修改项目根POM里的maven-gpg-plugin配置,把版本从3.0.1降到3.0.0,或者升级到3.1.0及以上版本,这些版本已经修复了空指针bug,探测不到GPG时会输出明确的错误提示,不会直接崩溃。
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

