<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.openhab</groupId> <artifactId>openhab-super-pom</artifactId> <version>[1.0, 2.0)</version> </parent> <groupId>org.openhab.addons</groupId> <artifactId>org.openhab.addons.reactor</artifactId> <version>5.0.0-SNAPSHOT</version> <packaging>pom</packaging> <name>openHAB Add-ons</name> <description>This project contains the official add-ons of openHAB</description> <organization> <name>openHAB.org</name> <url>https://www.openhab.org</url> </organization> <licenses> <license> <name>Eclipse Public License 2.0</name> <url>https://www.eclipse.org/legal/epl-2.0/</url> </license> </licenses> <modules> <module>bom</module> <module>bundles</module> <module>features</module> <module>itests</module> </modules> <scm> <connection>scm:git:https://github.com/openhab/openhab-addons.git</connection> <developerConnection>scm:git:https://github.com/openhab/openhab-addons.git</developerConnection> <tag>HEAD</tag> <url>https://github.com/openhab/openhab-addons</url> </scm> <issueManagement> <system>GitHub</system> <url>https://github.com/openhab/openhab-addons/issues</url> </issueManagement> <distributionManagement> <repository> <id>jfrog-release</id> <url>${oh.repo.distBaseUrl}/libs-release-local</url> </repository> <snapshotRepository> <id>jfrog</id> <url>${oh.repo.snapshotBaseUrl}/libs-snapshot-local</url> </snapshotRepository> </distributionManagement> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <oh.java.version>21</oh.java.version> <maven.compiler.release>${oh.java.version}</maven.compiler.release> <ohc.version>5.0.0-SNAPSHOT</ohc.version> <bnd.version>7.1.0</bnd.version> <commons.net.version>3.9.0</commons.net.version> <eea.version>2.4.0</eea.version> <jackson.version>2.18.2</jackson.version> <jna.version>5.16.0</jna.version> <karaf.version>4.4.7</karaf.version> <netty.version>4.1.104.Final</netty.version> <okhttp3.version>4.12.0</okhttp3.version> <okio.version>3.9.0</okio.version> <gson.version>2.11.0</gson.version> <kotlin.version>1.9.23</kotlin.version> <sat.version>0.17.0</sat.version> <slf4j.version>2.0.12</slf4j.version> <spotless.version>2.43.0</spotless.version> <!-- Eclipse Java formatter version 4.26+ does not check test files --> <spotless.eclipse.version>4.25</spotless.eclipse.version> <spotless.eclipse.wtp.version>4.21.0</spotless.eclipse.wtp.version> <bnd.importpackage/> <bnd.exportpackage/> <bnd.fixupmessages>"Classes found in the wrong directory"; is:=warning</bnd.fixupmessages> <bnd.includeresource>-${.}/NOTICE, -${.}/*.xsd</bnd.includeresource> <feature.directory>src/main/feature/feature.xml</feature.directory> <oh.bndDefaults><![CDATA[Bundle-SymbolicName: ${project.artifactId} Automatic-Module-Name: ${def;bsn} Import-Package: \\ io.swagger.v3.oas.annotations.*;resolution:=optional,\\ javax.annotation.security.*;resolution:=optional,\\ org.eclipse.jdt.annotation.*;resolution:=optional,\\ org.openhab.core.automation.annotation.*;resolution:=optional;version=!,\\ org.openhab.*;version=!,\\ com.google.common.*;version="14.0",\\ ${bnd.importpackage},\\ * -exportcontents: \\ !*.internal.*,\\ !*.impl.*, \\ org.openhab.*, \\ ${bnd.exportpackage} -noimportjava: true -sources: false -contract: * -includeresource: ${bnd.includeresource} -fixupmessages: \\ 'Unused Import-Package instructions';is:=ignore,\\ 'Unused Export-Package instructions';is:=ignore,\\ ${bnd.fixupmessages}]]> </oh.bndDefaults> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.openhab.core.bom</groupId> <artifactId>org.openhab.core.bom.compile</artifactId> <version>${ohc.version}</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.openhab.core.bom</groupId> <artifactId>org.openhab.core.bom.compile-model</artifactId> <version>${ohc.version}</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.openhab.core.bom</groupId> <artifactId>org.openhab.core.bom.openhab-core</artifactId> <version>${ohc.version}</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.openhab.core.bom</groupId> <artifactId>org.openhab.core.bom.runtime</artifactId> <version>${ohc.version}</version> <type>pom</type> <scope>runtime</scope> </dependency> <dependency> <groupId>org.openhab.core.bom</groupId> <artifactId>org.openhab.core.bom.test</artifactId> <version>${ohc.version}</version> <type>pom</type> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <!-- BEG: bnd --> <!-- Use the bnd-maven-plugin and assemble the symbolic names --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-maven-plugin</artifactId> <version>${bnd.version}</version> <configuration> <bnd><![CDATA[${oh.bndDefaults}]]></bnd> <!-- -dsannotations-options: norequirements --> <!-- Bundle-SymbolicName: ${project.groupId}.${project.artifactId} --> <skipIfEmpty>true</skipIfEmpty> </configuration> <executions> <execution> <goals> <goal>bnd-process</goal> </goals> </execution> </executions> </plugin> <!-- Required to make the maven-jar-plugin pick up the bnd generated manifest. Also avoid packaging empty Jars --> <!-- Moved... --> <!-- Setup the indexer for running and testing --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-indexer-maven-plugin</artifactId> <version>${bnd.version}</version> <configuration> <localURLs>REQUIRED</localURLs> <attach>false</attach> </configuration> <executions> <execution> <id>index</id> <goals> <goal>index</goal> </goals> <configuration> <indexName>${project.artifactId}</indexName> </configuration> </execution> <execution> <id>test-index</id> <goals> <goal>index</goal> </goals> <configuration> <indexName>${project.artifactId}</indexName> <outputFile>${project.build.directory}/test-index.xml</outputFile> <scopes> <scope>test</scope> </scopes> </configuration> </execution> </executions> </plugin> <!-- Define the version of the resolver plugin we use --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-resolver-maven-plugin</artifactId> <version>${bnd.version}</version> <configuration> <failOnChanges>false</failOnChanges> <bndruns/> </configuration> <executions> <execution> <goals> <goal>resolve</goal> </goals> </execution> </executions> </plugin> <!-- Define the version of the export plugin we use --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-export-maven-plugin</artifactId> <version>${bnd.version}</version> <configuration> <resolve>true</resolve> <failOnChanges>true</failOnChanges> </configuration> <executions> <execution> <goals> <goal>export</goal> </goals> </execution> </executions> </plugin> <!-- Define the version of the testing plugin that we use --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-testing-maven-plugin</artifactId> <version>${bnd.version}</version> <executions> <execution> <goals> <goal>testing</goal> </goals> </execution> </executions> </plugin> <!-- Define the version of the baseline plugin we use and avoid failing when no baseline jar exists. --> <!-- (for example before the first release) --> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-baseline-maven-plugin</artifactId> <version>${bnd.version}</version> <configuration> <failOnMissing>false</failOnMissing> </configuration> <executions> <execution> <goals> <goal>baseline</goal> </goals> </execution> </executions> </plugin> <!-- END: bnd --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>3.4.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <compilerId>eclipse</compilerId> <compilerArgs> <arg>-annotationpath</arg> <arg>CLASSPATH</arg> <arg>-classpath</arg> <arg>${project.build.directory}/dependency</arg> <arg>-err:+nullAnnot(org.eclipse.jdt.annotation.Nullable|org.eclipse.jdt.annotation.NonNull|org.eclipse.jdt.annotation.NonNullByDefault),+inheritNullAnnot,+nullAnnotConflict,-nullUncheckedConversion</arg> <arg>-warn:+null,+inheritNullAnnot,-nullUncheckedConversion,+nullAnnotRedundant,+nullDereference</arg> <arg>-nowarn:[${project.build.directory}/generated-sources]</arg> </compilerArgs> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-eclipse</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.eclipse.jdt</groupId> <artifactId>ecj</artifactId> <version>3.39.0</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.3</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.5.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>3.1.3</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.4.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.11.2</version> <configuration> <outputDirectory>${project.build.directory}/site</outputDirectory> <failOnError>!${quality.skip}</failOnError> <tags> <tag> <name>apiNote</name> <placement>a</placement> <head>API note:</head> </tag> <tag> <name>implNote</name> <placement>a</placement> <head>Implementation note:</head> </tag> </tags> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.15.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.21.0</version> <configuration> <preparationGoals>clean install</preparationGoals> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.21.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.3.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.5.2</version> <configuration> <argLine> --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED </argLine> <systemPropertyVariables> <junit.jupiter.execution.timeout.default>15 m</junit.jupiter.execution.timeout.default> <openhab.conf>${project.build.directory}/openhab/conf</openhab.conf> <openhab.runtime>${project.build.directory}/openhab/runtime</openhab.runtime> <openhab.userdata>${project.build.directory}/openhab/userdata</openhab.userdata> </systemPropertyVariables> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.6.0</version> </plugin> <plugin> <groupId>com.mycila</groupId> <artifactId>license-maven-plugin</artifactId> <version>4.6</version> <configuration> <basedir>${basedir}</basedir> <quiet>false</quiet> <failIfMissing>true</failIfMissing> <strictCheck>true</strictCheck> <aggregate>true</aggregate> <mapping> <xml>xml-header-style</xml> </mapping> <useDefaultExcludes>true</useDefaultExcludes> <properties> <year>2025</year> </properties> <encoding>UTF-8</encoding> <licenseSets> <licenseSet> <header>licenses/epl-2.0/header.txt</header> <headerDefinitions> <headerDefinition>licenses/epl-2.0/xml-header-style.xml</headerDefinition> </headerDefinitions> <includes> <include>**/org/openhab/**/*.java</include> <include>**/features/**/header.xml</include> </includes> <excludes> <exclude>**/3rdparty/**</exclude> <exclude>target/**</exclude> <exclude>**/pom.xml</exclude> <exclude>_*.java</exclude> </excludes> </licenseSet> </licenseSets> </configuration> <executions> <execution> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.openhab.core.tools</groupId> <artifactId>i18n-maven-plugin</artifactId> <version>${ohc.version}</version> </plugin> <plugin> <groupId>org.openhab.tools.sat</groupId> <artifactId>sat-plugin</artifactId> <version>${sat.version}</version> <configuration> <checkstyleProperties>${basedirRoot}/tools/static-code-analysis/checkstyle/ruleset.properties</checkstyleProperties> <checkstyleFilter>${basedirRoot}/tools/static-code-analysis/checkstyle/suppressions.xml</checkstyleFilter> <spotbugsExclude>${basedirRoot}/tools/static-code-analysis/spotbugs/suppressions.xml</spotbugsExclude> </configuration> <executions> <execution> <id>sat-all</id> <goals> <goal>checkstyle</goal> <goal>pmd</goal> <goal>spotbugs</goal> <goal>report</goal> </goals> <phase>verify</phase> </execution> </executions> </plugin> <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> <version>${spotless.version}</version> <configuration> <java> <eclipse> <file>openhab_codestyle.xml</file> <version>${spotless.eclipse.version}</version> </eclipse> <removeUnusedImports/> <importOrder> <file>openhab.importorder</file> </importOrder> <endWithNewline/> </java> <formats> <format> <!-- *.xml --> <includes> <include>src/**/*.xml</include> </includes> <excludes> <exclude>**/pom.xml</exclude> <exclude>**/feature.xml</exclude> <exclude>src/main/history/**/*.xml</exclude> <exclude>src/main/resources/header.xml</exclude> <exclude>src/main/resources/footer.xml</exclude> <exclude>src/main/resources/input/rss*.xml</exclude> <exclude>src/test/resources/**/*.xml</exclude> </excludes> <eclipseWtp> <type>XML</type> <files> <file>openhab_wst_xml_files.prefs</file> </files> <version>${spotless.eclipse.wtp.version}</version> </eclipseWtp> <trimTrailingWhitespace/> <endWithNewline/> </format> <format> <!-- feature.xml --> <includes> <include>src/main/feature/feature.xml</include> </includes> <eclipseWtp> <type>XML</type> <files> <file>openhab_wst_feature_file.prefs</file> </files> <version>${spotless.eclipse.wtp.version}</version> </eclipseWtp> <trimTrailingWhitespace/> <endWithNewline/> </format> <format> <!-- pom.xml --> <includes> <include>pom.xml</include> </includes> <eclipseWtp> <type>XML</type> <files> <file>openhab_wst_pom_file.prefs</file> </files> <version>${spotless.eclipse.wtp.version}</version> </eclipseWtp> <trimTrailingWhitespace/> <endWithNewline/> </format> </formats> </configuration> <dependencies> <dependency> <groupId>org.openhab.tools</groupId> <artifactId>openhab-codestyle</artifactId> <version>${sat.version}</version> </dependency> </dependencies> <executions> <execution> <id>codestyle_check</id> <goals> <goal>check</goal> </goals> <phase>initialize</phase> </execution> </executions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.commonjava.maven.plugins</groupId> <artifactId>directory-maven-plugin</artifactId> <version>1.0</version> <executions> <execution> <id>directories</id> <goals> <goal>directory-of</goal> </goals> <phase>initialize</phase> <configuration> <property>basedirRoot</property> <project> <groupId>org.openhab.addons</groupId> <artifactId>org.openhab.addons.reactor</artifactId> </project> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforce-java</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireMavenVersion> <version>3.6.3</version> </requireMavenVersion> <requireJavaVersion> <version>[21.0,22.0)</version> </requireJavaVersion> </rules> </configuration> </execution> </executions> </plugin> <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> </plugin> </plugins> <extensions> <extension> <groupId>org.openhab.tools.sat</groupId> <artifactId>sat-extension</artifactId> <version>${sat.version}</version> </extension> </extensions> </build> <profiles> <profile> <id>eclipse-m2e</id> <activation> <property> <name>m2e.version</name> </property> </activation> <build> <pluginManagement> <plugins> <!-- This plugin's configuration is used to store Eclipse m2e settings only. --> <!-- It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.karaf.tooling</groupId> <artifactId>karaf-maven-plugin</artifactId> <versionRange>[4.2.1,)</versionRange> <goals> <goal>features-generate-descriptor</goal> <goal>verify</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <versionRange>[1.4.0,)</versionRange> <goals> <goal>java</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-indexer-maven-plugin</artifactId> <versionRange>[3.1.0,)</versionRange> <goals> <goal>index</goal> <goal>local-index</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>org.commonjava.maven.plugins</groupId> <artifactId>directory-maven-plugin</artifactId> <versionRange>[1.0,)</versionRange> <goals> <goal>directory-of</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[3.0.0,)</versionRange> <goals> <goal>unpack</goal> <goal>unpack-dependencies</goal> </goals> </pluginExecutionFilter> <action> <execute/> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> </profile> <profile> <id>skip-check</id> <activation> <property> <name>skipChecks</name> </property> </activation> <build> <pluginManagement> <plugins> <plugin> <groupId>org.openhab.tools.sat</groupId> <artifactId>sat-plugin</artifactId> <version>${sat.version}</version> <executions> <execution> <id>sat-all</id> <phase>none</phase> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </profile> <profile> <id>check-bundles</id> <activation> <file> <exists>src</exists> </file> </activation> <build> <plugins> <plugin> <groupId>org.openhab.tools.sat</groupId> <artifactId>sat-plugin</artifactId> </plugin> </plugins> </build> </profile> <profile> <id>with-bnd-resolver-resolve</id> <activation> <property> <name>withResolver</name> </property> </activation> <build> <pluginManagement> <plugins> <plugin> <groupId>biz.aQute.bnd</groupId> <artifactId>bnd-resolver-maven-plugin</artifactId> <version>${bnd.version}</version> <executions> <execution> <goals> <goal>resolve</goal> </goals> <phase>package</phase> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </profile> <profile> <id>j17</id> <properties> <oh.java.version>17</oh.java.version> <maven.compiler.release>${oh.java.version}</maven.compiler.release> </properties> </profile> </profiles> </project>