该存储库包含在 openHAB 核心 API 之上实现的官方附加组件集。此处接受的附加组件将由 openHAB 附加组件维护者进行维护(例如,适应新的核心 API)。
要开始绑定开发,请遵循 https://www.openhab.org/docs/developer 上的指南和教程。
如果您对 openHAB Core 开发感兴趣,我们邀请您访问 https://github.com/openhab/openhab-core。
一些附加组件不在此存储库中,但仍然是官方 openHAB 发行版的一部分。其他存储库的不完整列表如下:
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
文件,请运行 maven,目标是karaf:kar
:
mvn clean install karaf:kar -pl :org.openhab.binding.astro
要缩短构建时间,您可以将以下选项添加到命令中:
选项 | 描述 |
---|---|
-DskipChecks | 跳过静态分析(Checkstyle、FindBugs) |
-DskipTests | 跳过测试的执行 |
-Dmaven.test.skip=true | 跳过测试的编译和执行 |
-Dfeatures.verify.skip=true | 跳过Karaf功能验证 |
-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:3.4.0:generate-default-translations
要检查您的代码是否遵循代码风格,请运行:
mvn spotless:check
要重新格式化您的代码,使其符合您可以运行的代码风格:
mvn spotless:apply
当您的附加组件在itests
目录中也有集成测试时,当 Maven 依赖项发生更改时,您可能需要更新itest.bndrun
文件中的 runbundle。 Maven 可以通过执行以下命令自动解决集成测试依赖关系:
mvn clean install -DwithResolver -DskipChecks
构建会在相应的包/target
目录中为每个包生成一个.jar
文件。
我们在开发人员文档网站上为不同 IDE 整理了一些分步指南:
https://www.openhab.org/docs/developer/#setup-the-development-environment
快乐编码!