本页面为希望为Stirling-PDF做出贡献或扩展其功能的开发人员提供了全面的信息。它涵盖了构建过程、开发工作流、CI/CD管道以及添加新功能的指南。有关部署选项的信息,请参阅部署。
本节介绍如何使用Gradle从源代码构建Stirling-PDF并设置开发环境。
克隆仓库
使用Gradle构建项目
要启用安全功能进行构建,请设置环境变量
为了高效的开发环境
DOCKER_ENABLE_SECURITY=true以进行安全功能测试来源:DeveloperGuide.md33-56 .github/workflows/build.yml34-48
该EndpointConfiguration类管理应用程序中启用或禁用的功能。端点根据功能分为不同的组。
来源:src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java20-304
本节介绍Stirling-PDF使用的持续集成和持续部署(CI/CD)管道。
构建工作流(build.yml):使用不同的JDK版本(17、21)和安全配置构建和测试项目。
许可证更新工作流(licenses-update.yml):自动检查和更新第三方许可证信息,如果检测到更改则创建一个PR。
文件同步工作流(sync_files.yml):同步翻译文件并使用翻译进度更新README。
预提交工作流(pre_commit.yml):运行预提交钩子以确保代码质量,并创建包含任何结果更改的PR。
属性检查工作流(check_properties.yml):验证PR中的语言属性文件以确保一致性。
来源:.github/workflows/build.yml1-60 .github/workflows/licenses-update.yml1-93 .github/workflows/sync_files.yml1-146 .github/workflows/pre_commit.yml1-81 .github/workflows/check_properties.yml1-251
Stirling-PDF依赖于多个第三方库和工具来提供其功能
| 类别 | 依赖项 |
|---|---|
| 核心框架 | Spring Boot, Spring Security |
| PDF 处理 | Apache PDFBox, PDF.js |
| 文件转换 | LibreOffice, Weasyprint |
| OCR | Tesseract OCR |
| UI | Bootstrap, jQuery, PDF-Lib.js |
| 构建工具 | Gradle, Docker |
| 质量工具 | QPDF |
项目使用自定义Gradle任务自动检查许可证兼容性
所有依赖项的许可证信息都保存在src/main/resources/static/3rdPartyLicenses.json中,并由CI/CD管道自动更新。
来源:.github/workflows/licenses-update.yml43-54
Stirling-PDF为开发和测试提供了几种Docker配置
本节提供了有关如何为Stirling-PDF添加新功能的指南。
示例控制器
示例Web控制器
示例Thymeleaf模板结构
来源:DeveloperGuide.md462-506 src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java1-90
添加新功能时,请更新语言属性文件以支持国际化
src/main/resources/messages_en_GB.properties(参考文件)#{key}语法,通过翻译键进行引用CI/CD管道包含用于检查语言文件一致性和跟踪翻译进度的流程。
来源:HowToAddNewLanguage.md32-68 .github/scripts/check_language_properties.py174-178
Stirling-PDF结合了手动测试和自动化测试。
来源:DeveloperGuide.md204-259 .github/workflows/build.yml90-146
用于本地测试
用于全面测试,包括Docker构建
该test.sh脚本执行以下操作
要为Stirling-PDF做出贡献
拉取请求模板包含一个清单,以确保在提交前满足所有要求,包括
来源: CONTRIBUTING.md1-45 .github/pull_request_template.md1-35