You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:40:22