openHAB 插件
本仓库包含基于 openHAB Core API 实现的官方插件集合。 在此处被接受的插件将由 openHAB 插件维护者 进行维护(例如,适配新的核心 API)。
要开始插件开发,请遵循我们在 https://www.openhab.org/docs/developer 处的指南和教程。
如果您对 openHAB Core 开发感兴趣,我们邀请您前往 https://github.com/openhab/openhab-core。
其他仓库中的插件
一些插件不在本仓库中,但仍然是官方 openHAB 发行版 的一部分。 以下是其他仓库的不完整列表:
- https://github.com/openhab/org.openhab.binding.zwave
- https://github.com/openhab/org.openhab.binding.zigbee
- https://github.com/openhab/openhab-webui
开发 / 仓库组织
openHAB 插件是 Java .jar 文件。
openHAB 构建系统基于 Maven。 官方 IDE(集成开发环境)是 Eclipse。
您会发现以下仓库结构:
.
+-- bom Maven buildsystem: Bill of materials
| +-- openhab-addons Lists all extensions for other repos to reference them
| +-- ... Other boms
|
+-- bundles Official openHAB extensions
| +-- org.openhab.binding.airquality
| +-- org.openhab.binding.astro
| +-- ...
|
+-- features Part of the runtime dependency resolver ("Karaf features")
|
+-- itests Integration tests. Those tests require parts of the framework to run.
| +-- org.openhab.binding.astro.tests
| +-- org.openhab.binding.avmfritz.tests
| +-- ...
|
+-- src/etc Auxilary buildsystem files: The license header for automatic checks for example
+-- tools Static code analyser instructions
|
+-- CODEOWNERS This file assigns people to directories so that they are informed if a pull-request
would modify their add-ons.
命令行构建
要从命令行构建所有插件,请输入:
mvn clean install
大多数时候,你不需要构建所有绑定,而只需构建你正在处理的那个绑定。
要仅构建你的绑定,请使用 -pl 选项。
例如,仅构建 astro 绑定:
mvn clean install -pl :org.openhab.binding.astro
如果您有一个绑定,其依赖项是动态指定的,如 feature.xml 中所述,您可以创建一个 .kar 而不是一个 .jar 文件。
一个 .kar 文件将包含 feature.xml,当添加到 openHAB 时,将加载并激活 feature.xml 文件中指定的任何依赖项。
要创建一个 .kar 文件,请使用目标 karaf:kar 运行 Maven:
mvn clean install karaf:kar -pl :org.openhab.binding.astro
为了缩短构建时间,您可以向命令添加以下选项:
| 选项 | 描述 |
|---|---|
-DskipChecks | 跳过静态分析(Checkstyle、FindBugs) |
-DskipTests | 跳过测试执行 |
-Dmaven.test.skip=true | 跳过测试的编译和执行 |
-Dfeatures.verify.skip=true | 跳过 Karaf 功能验证 |
-Dmarkdownlint.skip=true | 跳过 Markdown 检查 |
-Dspotless.check.skip=true | 跳过 Spotless 代码风格检查 |
-o | 离线工作,使 Maven 不下载任何更新 |
-T 1C | 并行构建,每个核心使用 1 个线程 |
-pl :<add-on directory> | 构建单个附加组件 |
例如,您可以在开发期间使用以下命令跳过检查和测试:
mvn clean install -DskipChecks -DskipTests -pl :org.openhab.binding.astro
添加这些选项可以缩短构建时间,但可能会掩盖代码中的问题。 并行构建也更难调试,且增加的负载可能导致对时间敏感的测试失败。
翻译
附加组件的翻译通过 Crowdin 进行管理。 英文翻译取自 openHAB-addons GitHub 仓库,并在英文 i18n 属性文件发生更改时自动导入到 Crowdin。 当翻译在 Crowdin 中添加或更新并获批后,Crowdin 会自动创建一个拉取请求。 因此,不应在 openHAB-addons 仓库中编辑翻译,而应仅在 Crowdin 中编辑。 否则,翻译会被自动流程覆盖。
要填充英文属性文件,请在附加组件上运行以下 Maven 命令:
mvn i18n:generate-default-translations
此命令还可以在添加或更新内容或频道时更新文件。
在某些情况下,该命令无法正常工作,需要使用完整的插件名称。 在这种情况下,请使用:
mvn org.openhab.core.tools:i18n-maven-plugin:5.0.0:generate-default-translations
代码质量
要检查你的代码是否遵循 代码风格,请运行:
mvn spotless:check
要将代码重新格式化以符合代码风格,您可以运行:
mvn spotless:apply
集成测试
如果你的插件在 itests 目录中也有集成测试,当 Maven 依赖项发生变化时,你可能需要更新 itest.bndrun 文件中的 runbundles。
Maven 可以通过执行以下命令自动解析集成测试依赖项:
mvn clean install -DwithResolver -DskipChecks
构建会在各自的 bundle /target 目录中为每个 bundle 生成一个 .jar 文件。
故障排除
如果在运行集成测试时遇到问题,请尝试以下步骤:
- 清除 bnd 缓存:删除
~/.bnd目录。 - 重建
bom索引:在bom目录中执行mvn clean install。 - 重建
itests索引:在itests目录中执行mvn clean install -N。
如何通过集成开发环境 (IDE) 进行开发
我们在开发者文档网站上为不同的 IDE 整理了一些分步指南:
https://www.openhab.org/docs/developer/#setup-the-development-environment
快乐编码!