如何在Linux环境下构建可在Windows运行的Spring Native原生可执行文件
Linux环境无Docker构建Windows原生Spring Native可执行文件方案
无需依赖Docker即可实现该需求,核心是利用GraalVM自带的交叉编译能力,配合MinGW-w64 Windows交叉编译工具链完成构建,具体操作步骤如下:
步骤1:安装Windows交叉编译工具链
不同Linux发行版安装命令不同:
- Debian/Ubuntu 系列:
sudo apt update && sudo apt install mingw-w64 -y - RHEL/CentOS/Fedora 系列:
sudo dnf install mingw64-gcc -y - Arch 系列:
sudo pacman -S mingw-w64-gcc
安装完成后执行x86_64-w64-mingw32-gcc -v验证是否安装成功,输出版本信息即为正常。
步骤2:修改pom.xml配置
找到你当前pom中的native-maven-plugin插件配置,添加交叉编译参数,修改后完整配置如下:
<plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <version>${native-buildtools.version}</version> <configuration> <buildArgs> <!-- 指定编译目标为Windows x64平台 --> <arg>--target=windows-x86-64</arg> <!-- 指定MinGW交叉编译器路径,如果你安装的MinGW在PATH中可以省略该参数 --> <arg>--native-compiler-path=x86_64-w64-mingw32-gcc</arg> <!-- 静态链接依赖,减少Windows运行时依赖 --> <arg>--static</arg> </buildArgs> </configuration> <executions> <execution> <id>build-native</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin>
步骤3:执行构建
直接运行常规的原生构建命令即可:mvn clean package
构建完成后,在target目录下会生成后缀为.exe的Windows可执行文件,直接拷贝到Windows x64环境即可运行,无需预装Java环境。
注意事项
- 如果你的项目引入了包含JNI绑定的依赖,需要提前准备对应依赖的Windows版本动态库(.dll文件),构建时将其放置在类路径下
- 若构建过程中提示缺少Windows系统库,可在buildArgs中添加
-Lxxx参数指定MinGW对应库文件的存放路径 - 你当前使用的GraalVM 21.1.0、Spring Native 0.10.0版本组合已兼容交叉编译能力,无需升级组件版本
内容的提问来源于stack exchange,提问作者werner
相关产品推荐
相关产品推荐

