- Made the build for the exmaples create uber-jars that contain all dependencies.
- Added a sample start script that is able to start an example on mac/linux
diff --git a/pom.xml b/pom.xml
index 488f9a5..2ecaf18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,4 +42,115 @@
     <module>utils</module>
   </modules>
 
+  <build>
+    <plugins>
+      <!--
+            Create an additional version of the jar containing all dependencies.
+            The file will have the suffix "uber".
+      -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.0.0</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>false</createDependencyReducedPom>
+              <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-uber.jar</outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <!--
+          In the examples we want this lib to be included,
+          so we change the scope from 'provided' to 'compile'.
+    -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
+  <profiles>
+    <!--
+        This defines a self-activating profile which is only enabled for
+        for projects that have a src/main/java directory (effectivley excludes
+        it from the current pom module.
+    -->
+    <!--profile>
+      <id>generate-classpath</id>
+      <activation>
+        <file>
+          <exists>src/main/java</exists>
+        </file>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>dump-dependency-tree</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>tree</goal>
+                </goals>
+                <configuration>
+                  <outputFile>${project.build.directory}/dependency-tree.graphml</outputFile>
+                  <outputType>graphml</outputType>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>xml-maven-plugin</artifactId>
+            <version>1.0.1</version>
+            <executions>
+              <execution>
+                <id>transform-dependency-tree</id>
+                <goals>
+                  <goal>transform</goal>
+                </goals>
+                <configuration>
+                  <transformationSets>
+                    <transformationSet>
+                      <file>${project.build.directory}/dependency-tree.graphml</file>
+                      <stylesheet>${project.basedir}/../src/main/xslt/classpath.xsl</stylesheet>
+                      <parameters>
+                        <parameter>
+                          <name>groupId</name>
+                          <value>${project.groupId}</value>
+                        </parameter>
+                        <parameter>
+                          <name>artifactId</name>
+                          <value>${project.artifactId}</value>
+                        </parameter>
+                        <parameter>
+                          <name>version</name>
+                          <value>${project.version}</value>
+                        </parameter>
+                      </parameters>
+                    </transformationSet>
+                  </transformationSets>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile-->
+  </profiles>
+
 </project>
\ No newline at end of file
diff --git a/src/main/xslt/classpath.xsl b/src/main/xslt/classpath.xsl
new file mode 100644
index 0000000..bc601eb
--- /dev/null
+++ b/src/main/xslt/classpath.xsl
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:grphml="http://graphml.graphdrawing.org/xmlns"
+                xmlns:yFiles="http://www.yworks.com/xml/graphml"
+                exclude-result-prefixes="grphml yFiles"
+                version="1.0">
+
+  <xsl:param name="groupId"/>
+  <xsl:param name="artifactId"/>
+  <xsl:param name="version"/>
+
+  <xsl:output media-type="text" omit-xml-declaration="yes"/>
+  <!--xsl:output indent="yes"/-->
+
+  <xsl:template match="/grphml:graphml">
+    <!-- Calculate the name of the current module. This will help find the starting point -->
+    <xsl:variable name="nodeName" select="concat($groupId,':', $artifactId, ':jar:', $version)"/>
+    <!-- Start outputting the classpath starting with the current modules node -->
+    <xsl:variable name="rootNode" select="grphml:graph/grphml:node[grphml:data/yFiles:ShapeNode/yFiles:NodeLabel = $nodeName]"/>
+
+    <xsl:call-template name="processNode">
+      <xsl:with-param name="currentNode" select="$rootNode"/>
+      <xsl:with-param name="addedNodeIds"/>
+    </xsl:call-template>
+  </xsl:template>
+
+  <xsl:template name="processNode">
+    <xsl:param name="currentNode"/>
+    <xsl:param name="addedNodeIds"/>
+    <xsl:variable name="currentNodeId" select="$currentNode/@id"/>
+    <xsl:if test="not(contains($addedNodeIds, concat('|', $currentNodeId, '|')))">
+      <xsl:variable name="newAddedNodeIds"><xsl:if test="string-length($addedNodeIds) = 0">|</xsl:if><xsl:value-of select="$addedNodeIds"/><xsl:value-of select="$currentNodeId"/>|</xsl:variable>
+      <xsl:variable name="outgoingCompileDependencyIds" select="//grphml:edge[(@source = $currentNodeId) and ((grphml:data/yFiles:PolyLineEdge/yFiles:EdgeLabel = 'compile') or (grphml:data/yFiles:PolyLineEdge/yFiles:EdgeLabel = 'provided'))]/@target"/>
+      <xsl:variable name="outgoingCompileDependencyName" select="$currentNode/grphml:data/yFiles:ShapeNode/yFiles:NodeLabel/text()"/>
+      <xsl:variable name="outgoingCompileDependencyGroupId" select="substring-before($outgoingCompileDependencyName, ':')"/>
+      <xsl:variable name="outgoingCompileDependencyArtifactId" select="substring-before(substring-after($outgoingCompileDependencyName, ':'), ':')"/>
+      <xsl:variable name="outgoingCompileDependencyVersion" select="substring-before(substring-after(substring-after(substring-after($outgoingCompileDependencyName, ':'), ':'), ':'), ':')"/>
+      <xsl:if test="not(starts-with($outgoingCompileDependencyGroupId, 'org.apache.edgent.'))">ext/</xsl:if><xsl:value-of select="concat($outgoingCompileDependencyArtifactId, '-', $outgoingCompileDependencyVersion, '.jar')"/>,<xsl:for-each select="$outgoingCompileDependencyIds">
+        <xsl:variable name="currentDependentNodeId" select="."/>
+        <xsl:variable name="currentDependentNode" select="//grphml:node[@id = $currentDependentNodeId]"/>
+        <xsl:call-template name="processNode">
+          <xsl:with-param name="currentNode" select="$currentDependentNode"/>
+          <xsl:with-param name="addedNodeIds" select="$newAddedNodeIds"/>
+        </xsl:call-template>
+      </xsl:for-each>
+    </xsl:if>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/topology/run-sample.sh b/topology/run-sample.sh
new file mode 100755
index 0000000..6267bf6
--- /dev/null
+++ b/topology/run-sample.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#
+
+java -cp target/edgent-samples-topology-1.2.0-SNAPSHOT-uber.jar org.apache.edgent.samples.topology.HelloEdgent
+