Preparing assembly of Karaf and ONOS artifacts for off-line deployments.
Change-Id: I113490bc6735f5372e33bb671ad5adec640b2e36
diff --git a/pom.xml b/pom.xml
index 0cde33f..738fb4d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,6 @@
<description>Open Network Operating System root project</description>
<modules>
- <module>tools/package/maven-plugin</module>
<module>utils</module>
<module>core</module>
<module>web</module>
@@ -55,6 +54,8 @@
<module>tools/package/archetypes</module>
<module>tools/package/branding</module>
+ <module>tools/package/karaf-assembly</module>
+ <module>tools/package/maven-plugin</module>
<module>tools/build/conf</module>
</modules>
diff --git a/tools/build/onos-package b/tools/build/onos-package
index 5566e60..5500208 100755
--- a/tools/build/onos-package
+++ b/tools/build/onos-package
@@ -50,16 +50,21 @@
$ONOS_ROOT/tools/package/bin/onos-client > bin/onos
chmod a+x bin/onos-service bin/onos
- # Stage the ONOS bundles, but only those that match the version
- mkdir -p $ONOS_STAGE/$KARAF_DIST/system/org/onosproject
- find $M2_REPO/org/onosproject -type f -path "*/$ONOS_POM_VERSION/*" \
- \( -name '*.jar' -o -name '*.pom' -o -name '*-features.xml' \) \
- | grep -v -Ee '-tests.jar|-[0-9]{8}.[0-9]{6}-' \
- | while read src; do
- dst=$ONOS_STAGE/$KARAF_DIST/system/${src#$M2_REPO/*}
- mkdir -p $(dirname $dst)
- cp $src $dst
- done
+ if [ -d $ONOS_ROOT/tools/package/karaf-assembly/target/repo ]; then
+ cp -r $ONOS_ROOT/tools/package/karaf-assembly/target/repo/* $ONOS_STAGE/$KARAF_DIST/system
+ else
+ # TODO: Deprecated so remove when confident staging works.
+ # Stage the ONOS bundles, but only those that match the version
+ mkdir -p $ONOS_STAGE/$KARAF_DIST/system/org/onosproject
+ find $M2_REPO/org/onosproject -type f -path "*/$ONOS_POM_VERSION/*" \
+ \( -name '*.jar' -o -name '*.pom' -o -name '*-features.xml' \) \
+ | grep -v -Ee '-tests.jar|-[0-9]{8}.[0-9]{6}-' \
+ | while read src; do
+ dst=$ONOS_STAGE/$KARAF_DIST/system/${src#$M2_REPO/*}
+ mkdir -p $(dirname $dst)
+ cp $src $dst
+ done
+ fi
# ONOS Patching ----------------------------------------------------------------
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>