执行Quarkus JReleaser打包发布指南命令时Assembly插件报错求助
解决Quarkus JReleaser构建时maven-assembly-plugin报错问题
可能的原因及解决方案
1. 确认runner文件是否生成
先检查报错中提到的runner文件是否存在于target目录:
ls /Users/xxx/simple-quarkus-app/target/simple-quarkus-app-1.0.0-SNAPSHOT-runner
如果文件不存在,先单独执行基础构建:
./mvnw package
观察target目录是否生成runner文件。若仍未生成,说明基础native构建失败,需先解决环境配置问题。
2. 验证GraalVM/Mandrel环境配置
确保终端环境的JAVA_HOME指向正确的GraalVM/Mandrel路径(macOS aarch64下路径示例:/Library/Java/JavaVirtualMachines/mandrel-23.0.1.0-Final-java17/Contents/Home):
echo $JAVA_HOME java -version
输出需显示GraalVM/Mandrel版本,且架构与macOS aarch64匹配。若环境变量未设置,可临时导出:
export JAVA_HOME=/path/to/your/mandrel export PATH=$JAVA_HOME/bin:$PATH
3. 检查maven-assembly-plugin配置
打开项目pom.xml,确认assembly插件的make-distribution执行目标配置正确:
- 确保插件引用了正确的assembly描述符文件(如
src/main/assembly/dist.xml) - 检查描述符文件中对runner文件的路径引用是否正确,示例正确配置:
<file> <source>${project.build.directory}/${project.build.finalName}-runner</source> <outputDirectory>/</outputDirectory> <fileMode>0755</fileMode> </file>
验证${project.build.finalName}的值是否与实际生成的runner文件名一致(即simple-quarkus-app-1.0.0-SNAPSHOT)。
4. 清理后重新构建
清理target目录残留文件后重试构建:
./mvnw clean ./mvnw -Pdist package
5. 多平台构建的额外配置
要支持Linux/macOS/Windows多系统发布,推荐通过JReleaser配置交叉编译:
在项目根目录的jreleaser.yml中添加native构建配置,利用容器完成跨平台编译:
native: image: quay.io/quarkus/ubi-quarkus-mandrel:23.0-java17 platforms: - linux-x86_64 - linux-aarch64 - macos-aarch64 - windows-x86_64
这样JReleaser会自动处理不同平台的native镜像构建,避免本地环境限制。
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

