使用Java11构建Bamboo Maven插件遇NPE及上传失败问题求助
解决Bamboo插件构建NPE及上传失败问题
你的问题核心在于版本不兼容和旧版构建工具对Java11的支持缺陷,下面是具体的排查和修复步骤:
1. 问题根源拆解
- 你遇到的
aQute.bnd.osgi.Processor.quote空指针异常,是因为旧版bnd工具(被Atlassian AMPS插件依赖)在Java11环境下存在兼容性bug,而你当前使用的AMPS版本(6.2.3)是针对Bamboo 6.2.3开发的,和目标环境Bamboo 6.8.1完全不匹配。 - 插件上传失败也是同理:用低版本Bamboo SDK构建的插件,无法兼容高版本的Bamboo实例。
2. 分步修复方案
步骤1:统一Bamboo与AMPS版本
将pom.xml中的版本配置全部更新为目标Bamboo的版本(6.8.1),AMPS版本必须和Bamboo版本严格一致,否则会触发各种兼容性问题:
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <!-- 匹配目标Bamboo实例版本 --> <bamboo.version>6.8.1</bamboo.version> <bamboo.data.version>6.8.1</bamboo.data.version> <amps.version>6.8.1</amps.version> <!-- 更新测试工具和Spring扫描器到兼容版本 --> <plugin.testrunner.version>2.0.0</plugin.testrunner.version> <atlassian.spring.scanner.version>2.1.10</atlassian.spring.scanner.version> <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key> </properties>
步骤2:强制更新依赖并重新构建
执行带强制更新参数的构建命令,确保Maven拉取到最新的兼容依赖,清理旧的缓存产物:
mvn clean install -U
步骤3:验证并上传插件
构建完成后,检查日志是否还有NullPointerException。如果构建成功且无异常,再将target目录下生成的插件JAR文件上传到Bamboo 6.8.1实例即可。
3. 额外注意事项
- 确保本地Maven运行环境使用的是Java11,避免跨版本编译带来的隐藏问题。
- 确认目标Bamboo 6.8.1实例的Java运行环境也是11,保持开发与生产环境一致。
内容的提问来源于stack exchange,提问作者user123




