Java 打包工具怎么用?Maven 和 Gradle 如何打包项目?

文章导读
Previous Quiz Next 在 Java 14 中,引入了一个新的打包工具 jpackage,用于取代 javapackager。javapackager 是 JavaFX kit 的一部分,在 Java 8 中引入。从 Java 11 开始,JavaFX 不再是
📋 目录
  1. jpackage 的需求
  2. jpackage 的命令行选项
  3. 前提条件
  4. 创建包
  5. 包的示例
A A

Java - 打包工具



Previous
Quiz
Next

在 Java 14 中,引入了一个新的打包工具 jpackage,用于取代 javapackager。javapackager 是 JavaFX kit 的一部分,在 Java 8 中引入。从 Java 11 开始,JavaFX 不再是 Java API 的标准功能,因此 javapackager 也不再是标准产品的一部分。jpackage 承担了这一职责。jpackage 使开发者能够将 jar 文件打包成原生可安装格式,例如 Windows 上的 exe/msi、MacOS 上的 pkg/dmg 等。

开发者可以使用 jlink 将所需的 JDK modules 压缩到最小模块集,然后使用 jpackage 创建轻量级 image。

jpackage 的需求

当软件需要分发时,最佳方式是为最终用户提供一个可安装包。这个可安装包通常包含 JDK、modules、任何依赖文件以及配置,并为用户提供熟悉的安装软件方式。用户不应被要求预先安装 JRE 或 JDK 才能运行 Java 应用程序。jpackage 处理所有这些情况,并将所有必需文件连同 JRE/JDK 一起打包成原生安装程序。

jpackage 的命令行选项

jpackage 是一个命令行工具,提供各种选项来定制可安装软件。以下是 jpackage 提供的一些功能:

  • 开发者可以提供自定义图标。

  • 开发者可以指定应用程序的安装位置。

  • 开发者可以为应用程序提供要传递的参数,以及启动应用程序时使用的 JVM options。

  • 开发者可以设置文件关联来启动应用程序。

  • 开发者可以设置选项来修改特定平台的菜单组选项以启动应用程序。

  • 开发者可以配置多个 launcher 来启动应用程序。

  • 使用 XCode,还可以对 bundle 进行签名。不过这仅适用于 MacOS。

前提条件

使用 jpackage 工具准备可安装包需要以下前提条件。

  • 首先需要 JDK 和软件应用程序。

  • 获取特定平台的打包工具,如下所示:

    • Windows− 要创建 EXE/MSI 可安装包,需要第三方库 wix 3.0 或更高版本

    • Ubuntu Linux− 要创建 RPM、DEB 包,需要 fakeroot 包。

    • Red Hat Linux− 要创建 RPM、DEB 包,需要 rpm-build 包。

    • MacOS− 可以使用 Xcode 命令行工具创建包。可以使用 -mac-sign 选项对包进行签名,并使用 -icon 选项提供自定义图标。

  • 应用程序包应根据平台进行准备。对于每个平台,需要单独运行命令。

创建包

可以使用以下命令创建包:

语法

jpackage --input lib \
  --name Tester \
  --main-jar Tester.jar \
  --main-class com..Tester \
  --type msi \
  --java-options '--enable-preview'

其中

  • input − 包含所需 libraries 的文件夹。

  • name − 可安装包的名称

  • main-jar − 用于启动应用程序的 jar 文件。

  • main-class − JAR 中要启动的 main class 的名称。如果 main JAR 中的 MANIFEST.MF 文件包含 main class 名称,则此选项不是必需的。

  • type − 可安装包的类型。MacOS 为 DMG/PKG,Windows 为 MSI/EXE,Linux 为 DEB/RPM。

  • java-options − Java runtime 的选项

此命令将创建一个 MSI 文件,可以在 Windows 上安装,应用程序可以像其他软件一样使用。

包的示例

public class APITester {
   public static void main(String[] args) {
      System.out.println("Welcome to .");
   }   
}

编译并运行程序

$javac APITester.java
$jar cf APITester.jar APITester.class

输出

对于 Windows 可执行文件,您需要下载 WiX Toolset v3.11.2 (wix311-binaries.zip) 并将工具包添加到您的 path 中。

一旦 jar 文件创建完成且 path 已设置,将 jar 放入名为 lib 的文件夹中,然后运行以下命令来创建 Windows MSI 安装程序。

$jpackage --input lib --name APITester --main-jar APITester.jar --main-class APITester --type msi