github地址:
https://github.com/fvarrui/JavaPackager
gradle方式见上面链接,这里我使用的maven构建项目,在maven中添加上下面插件
注意需要jdk版本9以上,支持模块化
<plugin>
<groupId>io.github.fvarrui</groupId>
<artifactId>javapackager</artifactId>
<version>1.6.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>package</goal>
</goals>
<configuration>
<!-- 启动类 -->
<mainClass>com.yuanduoduo.aio.Main</mainClass>
<!-- 添加精简jre缺少的模块 -->
<additionalModules>
<!-- 我这里自动生成的精简jre缺少这个模块,运行会报错 -->
<additionalModule>jdk.charsets</additionalModule>
</additionalModules>
<!-- 精简版jre -->
<bundleJre>true</bundleJre>
<!-- 生成安装包 -->
<generateInstaller>false</generateInstaller>
<!-- 不使用管理员身份打开程序 -->
<administratorRequired>false</administratorRequired>
<!-- 将指定文件夹包含到生成的程序路径 -->
<additionalResources>
<additionalResource>D:\projects\aio\config</additionalResource>
<additionalResource>D:\projects\aio\logs</additionalResource>
<additionalResource>D:\projects\aio\parameter</additionalResource>
</additionalResources>
<!-- 平台 -->
<platform>windows</platform>
<name>自动化监控</name>
<!-- exe 名称,通过引用的方式 -->
<displayName>${name}</displayName>
<!-- 虚拟机参数 -->
<vmArgs>
<vmArg>--add-opens java.base/java.lang=ALL-UNNAMED</vmArg>
</vmArgs>
<!-- 特定平台参数 -->
<winConfig>
<!-- 软件图标 -->
<icoFile>D:\projects\aio\src\main\resources\icon\logo.ico</icoFile>
</winConfig>
</configuration>
</execution>
</executions>
</plugin>
点击一键生成
target下生成
生成的exe可以直接点击运行,将文件夹转移到没有java环境的windows依旧可以运行
可以看到精简后的jre大小只有正常jre大小的一半