Preparing assembly of Karaf and ONOS artifacts for off-line deployments.
Change-Id: I113490bc6735f5372e33bb671ad5adec640b2e36
diff --git a/tools/package/karaf-assembly/onos-assembly b/tools/package/karaf-assembly/onos-assembly
new file mode 100755
index 0000000..ece4409
--- /dev/null
+++ b/tools/package/karaf-assembly/onos-assembly
@@ -0,0 +1,35 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Assembles together all bundles required to run ONOS off-line.
+# -----------------------------------------------------------------------------
+
+mkdir -p target
+
+features=target/features-list.xml
+repos=target/staged-repos.xml
+
+echo "<features>" > $repos
+echo " <repository>mvn:org.onosproject/onos-features/1.4.0-SNAPSHOT/xml/features</repository>" >> $repos
+
+# Find all app feature files
+find $ONOS_ROOT -name '*-features.xml' | grep -v features-repo > $features
+
+# Produce repository entry for each file
+cat $features | while read feature; do
+ echo " <repository>file:$feature</repository>" >> $repos
+done
+
+# Create a synthetic feature that depends on all other ONOS features
+echo " <feature name=\"foo\">" >> $repos
+grep "feature name=" $ONOS_ROOT/features/features.xml | cut -d\" -f2 | while read f; do
+ echo " <feature>$f</feature>" >> $repos
+done
+
+cat $features | while read feature; do
+ grep "feature name=" $feature | cut -d\" -f2 | while read f; do
+ echo " <feature>$f</feature>" >> $repos
+ done
+done
+echo " </feature>" >> $repos
+
+echo "</features>" >> $repos
\ No newline at end of file
diff --git a/tools/package/karaf-assembly/pom.xml b/tools/package/karaf-assembly/pom.xml
new file mode 100644
index 0000000..5dcf539
--- /dev/null
+++ b/tools/package/karaf-assembly/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Copyright 2014-2015 Open Networking Laboratory
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<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 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos</artifactId>
+ <version>1.4.0-SNAPSHOT</version>
+ <relativePath>../../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>onos-assembly</artifactId>
+ <packaging>pom</packaging>
+
+ <description>ONOS Apache Karaf assembly definitions</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <configuration>
+ <target>
+ <exec executable="bash">
+ <arg value="${basedir}/onos-assembly"/>
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ <version>3.0.3</version>
+
+ <executions>
+ <execution>
+ <id>features-add-to-repo</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>features-add-to-repository</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>file:${basedir}/target/staged-repos.xml</descriptor>
+ </descriptors>
+ <features>
+ <feature>foo</feature>
+ </features>
+ <repository>target/repo</repository>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>