VSCode使用Maven插件上传中央仓库时配置的相关插件未执行
问题原因与解决方案
根因分析
- 源码、Javadoc插件未绑定生命周期阶段:你当前配置的
maven-source-plugin、maven-javadoc-plugin仅指定了执行目标,没有绑定到具体的Maven生命周期阶段,因此不会随默认生命周期自动触发执行。 - 插件存放位置错误:如果上述三类插件(源码、Javadoc、GPG)是放在
<build><pluginManagement><plugins>节点下,仅会作为父级配置对子模块生效,不会在当前模块直接执行。 - GPG环境配置缺失:本地未安装GPG工具、未生成密钥、未配置密钥密码,都会导致签名步骤静默失败,不会中断构建也不会生成签名文件。
- VSCode Maven执行参数/阶段不全:VSCode Maven插件默认的生命周期执行可能自带跳过参数(如
maven.javadoc.skip=true),或者你执行的阶段未到verify/deploy,导致插件未触发。
修复步骤
- 补全插件生命周期绑定
给源码、Javadoc插件的执行配置补充<phase>package</phase>,让其在打包阶段自动执行,修正后的配置示例:
<!-- 源码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>attach-sources</id> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Javadoc插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <id>attach-javadocs</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
- 调整插件存放位置
确认maven-source-plugin、maven-javadoc-plugin、maven-gpg-plugin三个插件直接放在<build><plugins>节点下,而非pluginManagement子节点内。 - 完善GPG与Maven配置
- 本地安装GnuPG工具,在终端执行
gpg --version验证可正常调用 - 生成GPG密钥并将公钥上传到Maven要求的密钥服务器
- 在用户目录
.m2下的settings.xml中补充配置:
<servers> <server> <id>ossrh</id> <username>你的OSSRH账号</username> <password>你的OSSRH密码</password> </server> </servers> <properties> <gpg.passphrase>你的GPG密钥密码</gpg.passphrase> </properties>
- 验证执行
在VSCode终端手动执行命令测试,避免插件默认参数影响:
- 本地验证是否生成源码包、Javadoc包和签名文件:
mvn clean verify,执行后查看target目录下是否存在*-sources.jar、*-javadoc.jar以及对应jar包的.asc签名文件 - 执行完整部署流程:
mvn clean deploy
- 检查跳过参数
确认VSCode Maven插件的全局配置中没有设置maven.javadoc.skip=true、maven.source.skip=true、gpg.skip=true这类跳过参数,否则对应插件会直接不执行。
内容的提问来源于stack exchange,提问作者MichaPehlivan
相关产品推荐
相关产品推荐

