本文档提供了从源代码构建Stirling-PDF应用程序的全面说明。这些说明适用于希望修改代码库或构建自定义应用程序版本的开发者。
有关构建后的部署选项,请参阅部署。
下图说明了Stirling-PDF的整体构建过程
来源: build.gradle1-12 build.gradle331-362 build.gradle115-225 build.gradle227-280 build.gradle227-280 build.gradle227-280 build.gradle227-280
在构建Stirling-PDF之前,请确保已安装以下必备软件
来源: build.gradle34-37 build.gradle393-394
首先,从GitHub克隆仓库
要构建一个基本的JAR文件,请运行
在Windows上,请使用
此过程
build/libs 目录中创建一个名为 Stirling-PDF-{version}.jar 的JAR文件当前版本定义在 build.gradle 文件中(上次更新时版本为0.45.6)。
来源: build.gradle32 build.gradle571-582
Stirling-PDF的构建可以通过环境变量进行自定义,这些变量控制包含哪些组件
| 可变 | 描述 | 默认 |
|---|---|---|
DOCKER_ENABLE_SECURITY | 控制是否包含安全功能 | true |
STIRLING_PDF_DESKTOP_UI | 控制是否包含桌面UI功能 | true |
下图显示了这些环境变量如何影响包含的源文件
要构建无安全功能版本(创建最小化版本)
这将排除
stirling/software/SPDF/config/security/ 中的安全配置要构建无桌面UI功能版本
这将排除 stirling/software/SPDF/UI/impl/ 中的桌面UI实现。
Stirling-PDF使用Google Java Format风格。构建会自动应用Spotless插件的代码格式化。要手动格式化代码
来源: build.gradle364-376 build.gradle537-540
下图显示了构建输出目录的结构
来源: build.gradle115-225 build.gradle227-280 build.gradle331-362
要单独构建JAR文件
这将在 build/libs 目录中创建一个Spring Boot可执行JAR。
构建Windows可执行文件
这使用Launch4j创建了一个包装JAR文件的EXE文件。Launch4j配置包括
STIRLING_PDF_DESKTOP_UI)为当前平台构建安装程序
这将在 build/jpackage 目录中创建特定于平台的安装程序
.exe 安装程序.dmg 文件.deb 包(默认)或 .rpm 包安装程序配置包括不同平台的设置、应用程序元数据和运行时选项。
来源: build.gradle115-225 build.gradle227-280 build.gradle331-362
macOS x86_64 特定构建
这将创建一个Intel特定的macOS安装程序。该任务在需要时下载临时的JRE,并专门为x86_64架构打包应用程序。
来源: build.gradle227-280 build.gradle284-329
构建所有输出(JAR、EXE和特定平台的安装程序)
打包应用程序的JVM选项定义在 jpackage 配置的 javaOptions 数组中。这些选项控制应用程序通过特定平台的安装程序安装时如何运行,并包括
-DBROWSER_OPEN=true
-DSTIRLING_PDF_DESKTOP_UI=true
-Djava.awt.headless=false
-Dapple.awt.UIElement=true
--add-opens=java.base/java.lang=ALL-UNNAMED
以及用于桌面UI功能的其他模块开放。
Windows特定构建设置包括
C:/Program Files/Stirling-PDF)Stirling Software)macOS特定构建设置包括
public.app-category.productivity)来源: build.gradle109-113 build.gradle163-182
Linux特定构建设置包括
Office;PDF;Productivity)/opt/Stirling-PDF)项目版本定义在 build.gradle 中(当前为0.45.6)。writeVersion 任务会创建一个 version.properties 文件,该文件会被包含在构建的应用程序中。
打印当前版本
对于macOS,版本使用 getMacVersion 函数转换为基于年份的格式。
来源:build.gradle32 build.gradle109-113 build.gradle545-558 build.gradle584-588
如果您遇到与 Java 版本相关的错误,请确保您使用的是 JDK 17 或更高版本
Java 版本要求在构建文件的 java 部分指定。虽然 JDK 17 是最低支持版本,但建议使用 JDK 21。
如果构建因依赖问题而失败,请尝试
该项目依赖于众多库,包括
jpackageMacX64 任务会下载 x86_64 JRE来源:build.gradle227-280 build.gradle144-160 build.gradle185-202
有关部署选项的更多信息,请参阅 部署。
有关贡献新功能的更多信息,请参阅 添加新功能。
有关 CI/CD 流水线的详细信息,请参阅 CI/CD 流水线。