diff --git a/.gitignore b/.gitignore
index 040635fd17..718d23215d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,9 @@ bin/
.metadata/
.openapi-generator/
**/.settings/org.eclipse.*
-features/*/src/main/history
+bundles/**/src/main/history
+features/**/src/main/history
+features/**/src/main/feature
npm-debug.log
node_modules/
.idea
diff --git a/bundles/org.openhab.ui.basic/src/main/feature/feature.xml b/bundles/org.openhab.ui.basic/src/main/feature/feature.xml
new file mode 100644
index 0000000000..895f0a5dd8
--- /dev/null
+++ b/bundles/org.openhab.ui.basic/src/main/feature/feature.xml
@@ -0,0 +1,11 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+
+
+ openhab-core-ui
+ openhab-core-io-rest-sitemap
+ mvn:org.openhab.ui.bundles/org.openhab.ui.basic/${project.version}
+ mvn:org.openhab.ui.features/org.openhab.ui.features.openhab-ui-external/${project.version}/cfg/basic
+
+
diff --git a/bundles/org.openhab.ui.cometvisu.php/src/main/feature/feature.xml b/bundles/org.openhab.ui.cometvisu.php/src/main/feature/feature.xml
new file mode 100644
index 0000000000..f4e0283fdd
--- /dev/null
+++ b/bundles/org.openhab.ui.cometvisu.php/src/main/feature/feature.xml
@@ -0,0 +1,12 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+ mvn:org.openhab.ui.bundles/org.openhab.ui.cometvisu/${project.version}/xml/features
+
+
+ openhab-core-ui
+ openhab-ui-cometvisu
+ mvn:org.openhab.ui.bundles/org.openhab.ui.cometvisu.php/${project.version}
+ mvn:org.openhab/com.caucho.quercus/4.0.45
+
+
diff --git a/bundles/org.openhab.ui.cometvisu/pom.xml b/bundles/org.openhab.ui.cometvisu/pom.xml
index 996b94a0e4..2a3bc48f75 100644
--- a/bundles/org.openhab.ui.cometvisu/pom.xml
+++ b/bundles/org.openhab.ui.cometvisu/pom.xml
@@ -66,7 +66,7 @@
com.fasterxml.jackson.core
jackson-annotations
- 2.14.0-rc2
+ ${jackson.version}
@@ -155,6 +155,28 @@
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ attach-artifact
+
+ attach-artifact
+
+ package
+
+
+
+ target/feature/feature.xml
+ xml
+ features
+
+
+
+
+
+
diff --git a/bundles/org.openhab.ui.cometvisu/src/main/feature/feature.xml b/bundles/org.openhab.ui.cometvisu/src/main/feature/feature.xml
new file mode 100644
index 0000000000..df7a62a942
--- /dev/null
+++ b/bundles/org.openhab.ui.cometvisu/src/main/feature/feature.xml
@@ -0,0 +1,36 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+
+
+ openhab-core-model-item
+ openhab-core-model-sitemap
+ openhab-core-ui-icon
+ openhab-core-ui
+ openhab.tp-jaxb
+ openhab.tp-jackson
+ mvn:org.rrd4j/rrd4j/3.8.2
+ mvn:org.openhab.ui.bundles/org.openhab.ui.cometvisu/${project.version}
+
+ webFolder=../../../CometVisu/src/
+
+ icons>enableMapping=true
+
+ icons.mapping>firstfloor=control_building_int_og
+ icons.mapping>groundfloor=control_building_int_eg
+ icons.mapping>cellar=control_building_int_kg
+ icons.mapping>garden=scene_garden
+ icons.mapping>sun=weather_sun
+ icons.mapping>video=scene_livingroom
+ icons.mapping>kitchen=scene_dinner
+ icons.mapping>bath=scene_bath
+ icons.mapping>corridor=scene_hall
+ icons.mapping>office=scene_office
+ icons.mapping>boy1=scene_childs_room
+ icons.mapping>bedroom=scene_sleeping
+ icons.mapping>heating=sani_heating
+ icons.mapping>temperature=temp_temperature
+ icons.mapping>contact=fts_window_1w
+
+
+
diff --git a/bundles/org.openhab.ui.habot/src/main/feature/feature.xml b/bundles/org.openhab.ui.habot/src/main/feature/feature.xml
new file mode 100644
index 0000000000..ffdc708e70
--- /dev/null
+++ b/bundles/org.openhab.ui.habot/src/main/feature/feature.xml
@@ -0,0 +1,15 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+
+
+ openhab-core-model-script
+ openhab-core-ui
+ mvn:org.openhab.ui.bundles/org.openhab.ui.habot/${project.version}
+ mvn:org.openhab.core.bundles/org.openhab.core.semantics/${project.version}
+ mvn:org.openhab.core.bundles/org.openhab.core.io.rest/${project.version}
+ mvn:org.bouncycastle/bcprov-jdk15on/1.69
+ mvn:org.apache.opennlp/opennlp-tools/1.9.3
+ mvn:org.bitbucket.b_c/jose4j/0.7.9
+
+
diff --git a/bundles/org.openhab.ui.habpanel/src/main/feature/feature.xml b/bundles/org.openhab.ui.habpanel/src/main/feature/feature.xml
new file mode 100644
index 0000000000..cd30fe49c1
--- /dev/null
+++ b/bundles/org.openhab.ui.habpanel/src/main/feature/feature.xml
@@ -0,0 +1,9 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+
+
+ openhab-core-ui
+ mvn:org.openhab.ui.bundles/org.openhab.ui.habpanel/${project.version}
+
+
diff --git a/bundles/pom.xml b/bundles/pom.xml
index 1efb39e459..664ce297ff 100644
--- a/bundles/pom.xml
+++ b/bundles/pom.xml
@@ -52,6 +52,29 @@
pom
test
+
+
+ org.apache.karaf.features
+ framework
+ ${karaf.version}
+ kar
+ true
+
+
+ *
+ *
+
+
+
+
+
+ org.apache.karaf.features
+ standard
+ ${karaf.version}
+ features
+ xml
+ provided
+
@@ -67,6 +90,59 @@
true
+
+ org.apache.karaf.tooling
+ karaf-maven-plugin
+ ${karaf.version}
+ true
+
+ 80
+ true
+ true
+ false
+ true
+ true
+
+
+
+ compile
+
+ features-generate-descriptor
+
+ generate-resources
+
+ ${feature.directory}
+
+
+
+ karaf-feature-verification
+
+ verify
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/framework/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf.features:framework
+ ${oh.java.version}
+
+ framework
+
+
+ openhab-*
+
+ false
+ true
+ first
+
+
+
+
@@ -86,6 +162,10 @@
+
+ org.apache.karaf.tooling
+ karaf-maven-plugin
+
org.apache.maven.plugins
maven-dependency-plugin
diff --git a/features/openhab-ui-external/pom.xml b/features/openhab-ui-external/pom.xml
new file mode 100644
index 0000000000..e40446e5c3
--- /dev/null
+++ b/features/openhab-ui-external/pom.xml
@@ -0,0 +1,46 @@
+
+
+
+ 4.0.0
+
+
+ org.openhab.ui.features
+ org.openhab.ui.reactor.features
+ 3.4.0-SNAPSHOT
+
+
+ org.openhab.ui.features.openhab-ui-external
+ pom
+
+ openHAB UI :: Features :: UI External
+ openHAB UI External
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ attach-artifact
+
+ attach-artifact
+
+ package
+
+
+
+ src/main/resources/conf/basicui.cfg
+ cfg
+ basic
+
+
+
+
+
+
+
+
+
+
diff --git a/features/openhab-ui-external/src/main/resources/conf/basicui.cfg b/features/openhab-ui-external/src/main/resources/conf/basicui.cfg
new file mode 100644
index 0000000000..6c91e62e9b
--- /dev/null
+++ b/features/openhab-ui-external/src/main/resources/conf/basicui.cfg
@@ -0,0 +1,23 @@
+# Defines the UI theme.
+#
+#theme=default
+
+# Defines whether UI renders icons for the widgets or not.
+#
+#enableIcons=true
+
+# When enabled, changes the layout so that more widgets can fit on the screen.
+#
+#condensedLayout=false
+
+# Displays all widget states in uppercase.
+#
+#capitalizeValues=false
+
+# Play audio sent to the web audio sink.
+#
+#webAudio=false
+
+# The sitemap to show if no parameter is passed.
+#
+#defaultSitemap=
diff --git a/features/openhab-ui/pom.xml b/features/openhab-ui/pom.xml
new file mode 100644
index 0000000000..fab3e6681d
--- /dev/null
+++ b/features/openhab-ui/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+
+ org.openhab.ui.features
+ org.openhab.ui.reactor.features
+ 3.4.0-SNAPSHOT
+
+
+ org.openhab.ui.features
+
+ feature
+
+ openHAB UI :: Features :: UI
+ openHAB UI Features
+
+
+
+ ${project.groupId}
+ org.openhab.ui.features.openhab-ui-external
+ ${project.version}
+ pom
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+ false
+
+
+ create-karaf-features
+
+ run
+
+ generate-sources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/features/openhab-ui/src/main/resources/footer.xml b/features/openhab-ui/src/main/resources/footer.xml
new file mode 100644
index 0000000000..a32328a54c
--- /dev/null
+++ b/features/openhab-ui/src/main/resources/footer.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/features/openhab-ui/src/main/resources/header.xml b/features/openhab-ui/src/main/resources/header.xml
new file mode 100644
index 0000000000..bdf7c48482
--- /dev/null
+++ b/features/openhab-ui/src/main/resources/header.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
diff --git a/features/pom.xml b/features/pom.xml
index 825b58c25f..190d11794d 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -11,12 +11,15 @@
org.openhab.ui.features
- org.openhab.ui.features
-
- feature
+ org.openhab.ui.reactor.features
+ pom
openHAB UI :: Features
- openHAB UI Features
+
+
+ openhab-ui
+ openhab-ui-external
+
diff --git a/features/src/main/feature/feature.xml b/features/src/main/feature/feature.xml
deleted file mode 100644
index ac4ec86c48..0000000000
--- a/features/src/main/feature/feature.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
- openhab-core-ui
- openhab-core-io-rest-sitemap
- mvn:org.openhab.ui.bundles/org.openhab.ui.basic/${project.version}
-
-
-
- openhab-core-model-item
- openhab-core-model-sitemap
- openhab-core-ui-icon
- openhab-core-ui
- openhab.tp-jaxb
- openhab.tp-jackson
- mvn:org.rrd4j/rrd4j/3.4
- mvn:org.openhab.ui.bundles/org.openhab.ui.cometvisu/${project.version}
-
- webFolder=../../../CometVisu/src/
-
- icons>enableMapping=true
-
- icons.mapping>firstfloor=control_building_int_og
- icons.mapping>groundfloor=control_building_int_eg
- icons.mapping>cellar=control_building_int_kg
- icons.mapping>garden=scene_garden
- icons.mapping>sun=weather_sun
- icons.mapping>video=scene_livingroom
- icons.mapping>kitchen=scene_dinner
- icons.mapping>bath=scene_bath
- icons.mapping>corridor=scene_hall
- icons.mapping>office=scene_office
- icons.mapping>boy1=scene_childs_room
- icons.mapping>bedroom=scene_sleeping
- icons.mapping>heating=sani_heating
- icons.mapping>temperature=temp_temperature
- icons.mapping>contact=fts_window_1w
-
-
-
-
- openhab-core-ui
- openhab-ui-cometvisu
- mvn:org.openhab.ui.bundles/org.openhab.ui.cometvisu.php/${project.version}
- mvn:org.openhab/com.caucho.quercus/4.0.45
-
-
-
- openhab-core-ui
- mvn:org.openhab.ui.bundles/org.openhab.ui.habot/${project.version}
- mvn:org.openhab.core.bundles/org.openhab.core.semantics/${project.version}
- mvn:org.openhab.core.bundles/org.openhab.core.io.rest/${project.version}
- mvn:org.bouncycastle/bcprov-jdk15on/1.69
- mvn:org.apache.opennlp/opennlp-tools/1.9.3
- mvn:org.bitbucket.b_c/jose4j/0.7.9
-
-
-
- openhab-core-ui
- mvn:org.openhab.ui.bundles/org.openhab.ui.habpanel/${project.version}
-
-
-
diff --git a/pom.xml b/pom.xml
index 208d65fb8c..69270df4d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,6 +69,7 @@
6.3.0
2.3.0
+ 2.12.7
4.3.7
3.4.0-SNAPSHOT
0.13.0
@@ -457,6 +458,10 @@ Import-Package: \\
**/pom.xml
+ **/feature.xml
+ src/main/history/**/*.xml
+ src/main/resources/header.xml
+ src/main/resources/footer.xml
src/test/resources/**/*.xml