如何修改JavaPackager生成的默认包文件名?
解决JavaPackager自定义Zip包命名(区分带/不带Jre)
核心思路
不修改全局name属性,通过两次独立打包配置分别指定输出文件名,同时保证内部可执行文件的名称一致。
具体实现步骤
1. 打包带Jre的Full包
保持原始name参数(控制内部exe文件名),自定义输出包名并开启Jre打包:
- 设定
name为你需要的内部可执行文件名(比如myapp) - 通过
artifactName参数指定包名规则为${name}-${version}-${platform}_Full_.zip - 开启
bundleJre=true配置
以Gradle插件为例的配置代码:
javaPackager { name = 'myapp' version = '1.0.0' platform = 'windows' bundleJre = true artifactName = "${name}-${version}-${platform}_Full_.zip" // 补充其他必要配置:mainClass、jrePath等 }
2. 打包不带Jre的Light包
复制上述配置,仅修改两个关键参数:
- 将
bundleJre设为false - 修改
artifactName为${name}-${version}-${platform}_Light_.zip
以Gradle独立任务为例的配置代码:
task packageLight(type: JavaPackagerTask) { name = 'myapp' version = '1.0.0' platform = 'windows' bundleJre = false artifactName = "${name}-${version}-${platform}_Light_.zip" // 保持和Full包一致的其他配置:mainClass等 }
3. 执行打包
分别运行两次打包任务,即可得到符合要求的两个包:
myapp-1.0.0-windows-Full.zip(内部包含myapp.exe和Jre文件)myapp-1.0.0-windows-Light.zip(内部仅包含myapp.exe)
关键说明
- 全局
name属性仅控制内部可执行文件的名称,全程无需修改,确保两个包内的exe文件名一致 - 通过
artifactName参数直接覆盖默认包命名规则,实现带/不带Jre的包名区分 - 若使用Maven插件,思路完全一致:在两次打包配置中分别设置
artifactName和bundleJre参数即可
内容的提问来源于stack exchange,提问作者lvr123
相关产品推荐
相关产品推荐

