diff --git a/.gitignore b/.gitignore
index ea30b70..128a2d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,4 @@
 
-# get-edgent-jars generated outout
-get-edgent-jars-project
-
 *.class
 
 # Local developers toolchain
diff --git a/APPLICATION_DEVELOPMENT.md b/APPLICATION_DEVELOPMENT.md
index 44e3230..3166931 100644
--- a/APPLICATION_DEVELOPMENT.md
+++ b/APPLICATION_DEVELOPMENT.md
@@ -17,8 +17,6 @@
 
 # Edgent Application Development, Packaging and Execution.
 
-This file is a work-in-progress.
-
 To develop Edgent applications you will utilize the 
 Edgent SDK/runtime jars and package your application
 artifacts for deploying to an edge device for execution.
@@ -78,9 +76,8 @@
 
 If you can't or don't want to use maven-repository-enabled tooling
 you will need to get a local copy of the Edgent jars and their
-dependencies and add them to your compile classpath.
-The Edgent supplied `get-edgent-jars.sh` tool can be used to
-get copies of the jars from a maven repository.
+dependencies and add them to your compile classpath.  This case
+is covered in the following sections.
 
 
 ## Packaging and Execution
@@ -109,7 +106,8 @@
 the application's dependent Edgent classes and their
 transitive dependencies.
 
-The Edgent samples poms contain configuration information
+The Edgent samples template project's pom and
+the Edgent samples poms contain configuration information
 that generates an uber jar in addition to the standard
 application jar.  Eclipse can also export an uber jar.
 
@@ -142,46 +140,8 @@
 and their dependencies.  The binary artifacts
 are only released to maven central.
 
-The Edgent supplied get-edgent-jars.sh tool supports this mode.
-   
-## get-edgent-jars.sh
-
-The `get-edgent-jars.sh` script copies the Edgent runtime jars and their
-dependencies from a local or remote maven repository into a local folder.
-
-The user may then directly use the jars in CLASSPATH specifications
-for Edgent application compilation or execution.
-A `classpath.sh` script is generated to assist with this.
-
-By default the script retrieves the Edgent java8 platform jars for the
-script's default Edgent version.
-
-The script creates and builds a small maven project as
-part of its execution.
-
-``` sh
-get-edgent-jars.sh --version 1.2.0-SNAPSHOT  # retrieve the Edgent 1.2.0-SNAPSHOT java8 jars
-This command downloads the Apache Edgent jars and their transitive external dependencies.
-The external dependencies have their own licensing term that you should review.
-A summary of the external dependencies can be found here <TODO URL>.
-Continue? [y/n] y
-##### Generating maven project get-edgent-jars-project...
-##### Generating dependency decls...
-##### Adding dependency decls to pom...
-##### Retrieving jars into local maven repo...
-...
-##### Copying jars...
-##### Generating classpath.sh...
-##### The Edgent jars are in get-edgent-jars-project/edgent-jars
-##### The external jars are in get-edgent-jars-project/ext-jars
-##### CLASSPATH may be set by copying get-edgent-jars-project/java8/classpath.sh and using it like:
-#####    export CLASSPATH=`classpath.sh path-to-parent-of-edgent-jars-dir`
-```
-
-For more usage information:
-``` sh
-get-edgent-jars.sh -h
-```
+See `samples/get-edgent-jars-project` for a tool 
+to get a copy of the Edgent jars.
 
 ## package-app.sh
 
@@ -198,14 +158,13 @@
 their dependencies are retrieved from a local or remote
 maven repository.
 
-If the application was built using java8, complied against
-the java8 Edgent jars, and the execution environment is
+If the application's execution environment is
 java7 or android, use the appropriate script options
 to retrieve the appropriate Edgent platform jars for
 execution.
 
-The run-app.sh script configures the CLASSPATH and runs
-the application.
+The generated run-app.sh script configures the CLASSPATH
+and runs the application.
 
 E.g.,
 
diff --git a/get-edgent-jars-project/.gitignore b/get-edgent-jars-project/.gitignore
new file mode 100644
index 0000000..574159f
--- /dev/null
+++ b/get-edgent-jars-project/.gitignore
@@ -0,0 +1,6 @@
+
+# generated from pom.xml.template
+pom.xml
+
+# old-get-edgent-jars.sh generated outout
+tmp-get-edgent-jars-project
diff --git a/get-edgent-jars-project/README.md b/get-edgent-jars-project/README.md
new file mode 100644
index 0000000..ad176b9
--- /dev/null
+++ b/get-edgent-jars-project/README.md
@@ -0,0 +1,54 @@
+<!--
+  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.
+-->
+
+The `get-edgent-jars-project` can be used to copy Apache Edgent jars
+and their transitive dependencies from a local or remote maven 
+repository into bundles under `target`.
+
+Use `get-edgent-jars.sh` to create bundles containing the jars.
+The script also creates `target/classpath.sh` for composing a classpath
+to use the Edgent jars.
+
+By default the script retrieves the Edgent java8 platform jars for the
+project's default Edgent version.
+
+``` sh
+cd get-edgent-jars-project
+./get-edgent-jars.sh --version 1.2.0-SNAPSHOT  # retrieve the Edgent 1.2.0-SNAPSHOT java8 jars
+##### Generating dependency decls...
+##### Generating pom.xml...
+...
+##### Generating the bundles...
+...
+##### Generating classpath.sh...
+##### Bundle LICENSING information:
+...
+##### Using a bundle:
+
+    copy a bundle from target and unpack it
+    copy target/classpath.sh and use it to compose a classpath:
+
+        export CLASSPATH=`./classpath.sh --add-slf4j-jdk <path-to-unpacked-bundle>`
+
+    Omit "--add-slf4j-jdk" to omit an slf4j-jdk* implementation jar from the classpath.
+```
+
+
+For more usage information:
+``` sh
+get-edgent-jars.sh -h
+```
diff --git a/get-edgent-jars.sh b/get-edgent-jars-project/get-edgent-jars.sh
similarity index 65%
copy from get-edgent-jars.sh
copy to get-edgent-jars-project/get-edgent-jars.sh
index 46a2bbf..4b4194a 100755
--- a/get-edgent-jars.sh
+++ b/get-edgent-jars-project/get-edgent-jars.sh
@@ -29,21 +29,22 @@
 ##   Lines that begin with '#' are ignored.
 ## --mvn mvn-cmd use mvn-cmd instead of "./mvnw"
 ##
-## Creates the directory get-edgent-jars-project and a maven project in it
+## Creates bundles and classpath.sh in the target dir.
 
 USAGE="usage: [--platform {java8|java7|android}] [--version edgent-version] [--artifacts csv-gav-list] [--file gav-file] [--mvn mvn-cmd]"
 
 set -e
 
-SAMPLES_DIR=`(cd $(dirname $0); pwd)`
+# project dir is whereever this script resides
+PROJ_DIR=`(cd $(dirname $0); pwd)`
+
+SAMPLES_DIR=`(cd $(dirname $0); pwd)`/..
 MVN_CMD=${SAMPLES_DIR}/mvnw
 
 EDGENT_PLATFORM=java8
-EDGENT_VERSION=1.2.0
+EDGENT_VERSION=
 SLF4J_VERSION=1.7.12
 
-PROJ_DIR=get-edgent-jars-project
-
 if [ "$1" = "--platform" -a $# -gt 1 ]; then
     EDGENT_PLATFORM=$2; shift; shift
 fi
@@ -128,58 +129,24 @@
 }
 
 ###########################
-cat <<EOF
-This command downloads the Apache Edgent jars and their transitive external dependencies.
-The external dependencies have their own licensing term that you should review.
-A summary of the external dependencies can be found here <TODO URL>.
-EOF
-confirm "Continue?" || exit
-
-###########################
-if [ ! -d ${PROJ_DIR} ]; then
-    echo "##### Generating maven project ${PROJ_DIR}..."
-    # ensure a standalone pom (no parent) to avoid unwanted inherited deps
-    TMP_PROJ=${PROJ_DIR}-tmp
-    mkdir ${TMP_PROJ}
-    cd ${TMP_PROJ}
-    ${MVN_CMD} -B archetype:generate \
-        -DarchetypeGroupId=org.apache.maven.archeTypes \
-        -DarchetypeArtifactId=maven-archetype-quickstart \
-        -DgroupId=org.apache.edgent.tools \
-        -DartifactId=${PROJ_DIR} \
-        -Dversion=1.0
-    cd ..
-    mv ${TMP_PROJ}/${PROJ_DIR} ${PROJ_DIR}
-    rmdir ${TMP_PROJ}
-    cp ${PROJ_DIR}/pom.xml ${PROJ_DIR}/pom.xml.orig
-else
-    cp ${PROJ_DIR}/pom.xml.orig ${PROJ_DIR}/pom.xml
-fi    
-
-###########################
-
-cd ${PROJ_DIR}
-
-###########################
-
-###########################
 echo
 echo "##### Generating dependency decls..."
 ARTIFACT_GAVS="${OPT_GAVS:-${DEFAULT_GAVS}}"
-ARTIFACT_GAVS=`echo "${ARTIFACT_GAVS}" | sed -e "s/{EV}/${EDGENT_VERSION}/g"`
 mkdir -p target
 DEP_DECLS_FILE=target/tmp-dep-decls
 rm -f ${DEP_DECLS_FILE}
 for i in ${ARTIFACT_GAVS}; do
-    echo $i | awk -F : '{ type=""; if ($4 != "") type="  <type>" $4 "</type>\n"; printf "<dependency>\n  <groupId>%s</groupId>\n  <artifactId>%s</artifactId>\n  <version>%s</version>\n%s</dependency>\n", $1, $2, $3, type }' >> ${DEP_DECLS_FILE}
+    echo $i | awk -F : '{ type=""; if ($3 == "{EV}") $3="${edgent.core.version}"; if ($4 != "") type="  <type>" $4 "</type>\n"; printf "<dependency>\n  <groupId>%s</groupId>\n  <artifactId>%s</artifactId>\n  <version>%s</version>\n%s</dependency>\n", $1, $2, $3, type }' >> ${DEP_DECLS_FILE}
 done
 DEP_DECLS=`cat ${DEP_DECLS_FILE}`
 
 ###########################
 echo
-echo "##### Adding dependency decls to pom..."
-ed pom.xml <<EOF
-/<dependencies>
+echo "##### Generating pom.xml..."
+cd ${PROJ_DIR}
+cp pom.xml.template pom.xml
+ed -s pom.xml <<EOF
+/INJECT_DEPENDENCIES_HERE
 a
 ${DEP_DECLS}
 .
@@ -188,55 +155,50 @@
 
 ###########################
 echo
-echo "##### Retrieving jars into local maven repo..."
-${MVN_CMD} clean compile
+echo "##### Generating the bundles..."
+EDGENT_VERSION_PROPERTY=
+if [ "${EDGENT_VERSION}" ]; then
+  EDGENT_VERSION_PROPERTY=-Dedgent.core.version=${EDGENT_VERSION}
+fi
+PLATFORM_PROFILE=
+if [ ${EDGENT_PLATFORM} != "java8" ]; then
+  PLATFORM_PROFILE="-Pplatform-${EDGENT_PLATFORM}"
+fi
+${MVN_CMD} clean package ${EDGENT_VERSION_PROPERTY} ${PLATFORM_PROFILE}
 
-###########################
-echo
-echo "##### Copying jars..."
-# if someone screws up j7 or android deps, uncomment the following and
-# it will help identify wrong jars that are getting included / copied
-# (and otherwise overwriting each other).
-#DEBUG_DEPS=-Dmdep.prependGroupId=true
-${MVN_CMD} dependency:copy-dependencies -DincludeScope=runtime ${DEBUG_DEPS}
-
-DEPS_SRC_DIR=target/dependency
-EDGENT_DEPS_DIR=${EDGENT_PLATFORM}/edgent-jars
-EXT_DEPS_DIR=${EDGENT_PLATFORM}/ext-jars
-
-rm -rf "${EDGENT_DEPS_DIR}"; mkdir -p ${EDGENT_DEPS_DIR}
-rm -rf "${EXT_DEPS_DIR}"; mkdir -p ${EXT_DEPS_DIR}
-
-cp ${DEPS_SRC_DIR}/* ${EXT_DEPS_DIR}
-
-for i in `find ${EXT_DEPS_DIR} -name '*edgent-*.*ar'`; do
-  mv $i ${EDGENT_DEPS_DIR}
-done
 
 ###########################
 echo
 echo "##### Generating classpath.sh..."
-cat << 'EOF'  > ${EDGENT_PLATFORM}/classpath.sh
+cat << 'EOF'  > ${PROJ_DIR}/target/classpath.sh
 #!/bin/sh
+USAGE="usage: classpath.sh [--add-slf4j-jdk] <path-to-unpacked-bundle>"
 set -e
-if [ "${1}" = "" -o "${1}" = "-?" -o "${1}" = "-help" ]; then 
-    echo "usage: classpath.sh <path-to-parent-of-edgent-jars-dir>"
+if [ "${1}" == "--add-slf4j-jdk" ]; then
+    ADD_SLF4J_IMPL=slf4j-jdk
+    shift
+fi
+if [ $# != 1 ] || [[ ${1} == -* ]] ; then
+    echo "${USAGE}"
     exit 1
 fi
 BASEDIR=${1}
 cd ${BASEDIR}
 SEP=
 CP=
-if [ "`ls edgent-jars 2>/dev/null`" != "" ]; then
-    for i in edgent-jars/*; do
+if [ "`ls libs 2>/dev/null`" != "" ]; then
+    for i in libs/*; do
         CP="${CP}${SEP}${BASEDIR}/${i}"
         SEP=":"
     done
 fi
-if [ "`ls ext-jars 2>/dev/null`" != "" ]; then
-    for i in ext-jars/*; do
+if [ "`ls ext 2>/dev/null`" != "" ]; then
+    for i in ext/*; do
         if [[ ${i} == */slf4j-* ]] && [[ ${i} != */slf4j-api-* ]] ; then
-            continue
+            # it's an slf4j impl
+            if [[ "${ADD_SLF4J_IMPL}" == "" ]] || [[ ${i} != */${ADD_SLF4J_IMPL}* ]] ; then 
+                continue
+            fi
         fi
         CP="${CP}${SEP}${BASEDIR}/${i}"
         SEP=":"
@@ -244,11 +206,21 @@
 fi
 echo "${CP}"
 EOF
-chmod +x ${EDGENT_PLATFORM}/classpath.sh
+chmod +x target/classpath.sh
 
 ###########################
 echo
-echo "##### The Edgent jars are in ${PROJ_DIR}/${EDGENT_DEPS_DIR}"
-echo "##### The external jars are in ${PROJ_DIR}/${EXT_DEPS_DIR}"
-echo "##### CLASSPATH may be set by copying ${PROJ_DIR}/${EDGENT_PLATFORM}/classpath.sh and using it like:"
-echo '#####    export CLASSPATH=`classpath.sh path-to-parent-of-edgent-jars-dir`'
+echo "##### Bundle LICENSING information:"
+echo
+cat ${PROJ_DIR}/src/main/resources/README
+echo
+cat <<'EOF'
+##### Using a bundle:
+
+    copy a bundle from target and unpack it
+    copy target/classpath.sh and use it to compose a classpath:
+
+        export CLASSPATH=`./classpath.sh --add-slf4j-jdk <path-to-unpacked-bundle>`
+
+    Omit "--add-slf4j-jdk" to omit an slf4j-jdk* implementation jar from the classpath.
+EOF
diff --git a/get-edgent-jars.sh b/get-edgent-jars-project/old-get-edgent-jars.sh
similarity index 98%
rename from get-edgent-jars.sh
rename to get-edgent-jars-project/old-get-edgent-jars.sh
index 46a2bbf..fffb747 100755
--- a/get-edgent-jars.sh
+++ b/get-edgent-jars-project/old-get-edgent-jars.sh
@@ -42,7 +42,7 @@
 EDGENT_VERSION=1.2.0
 SLF4J_VERSION=1.7.12
 
-PROJ_DIR=get-edgent-jars-project
+PROJ_DIR=tmp-get-edgent-jars-project
 
 if [ "$1" = "--platform" -a $# -gt 1 ]; then
     EDGENT_PLATFORM=$2; shift; shift
diff --git a/get-edgent-jars-project/pom.xml.template b/get-edgent-jars-project/pom.xml.template
new file mode 100644
index 0000000..bae3613
--- /dev/null
+++ b/get-edgent-jars-project/pom.xml.template
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <!-- standalone project -->
+  <!--parent>
+    <groupId>org.apache.edgent</groupId>
+    <artifactId>edgent-parent</artifactId>
+    <version>1.2.0-SNAPSHOT</version>
+  </parent-->
+
+  <groupId>org.apache.edgent.get-edgent-jars</groupId>
+  <artifactId>get-edgent-jars</artifactId>
+  <version>1.2.0-SNAPSHOT</version>
+
+  <name>Apache Edgent get-edgent-jars ${samples.projname.platform}</name>
+
+  <properties>
+    <samples.projname.platform> (Java 8)</samples.projname.platform>  <!--  tweaked by -Pplatform-* -->
+    <edgent.platform>java8</edgent.platform> <!-- tweaked by -Pplatform-* -->    
+    <edgent.groupId.platform/> <!-- tweaked by -Pplatform-* -->    
+    <edgent.base.groupId>org.apache.edgent${edgent.groupId.platform}</edgent.base.groupId>
+    <!--  at least for now, the samples version is lockstep with the core
+          so default to using the same core as the this project.
+          get-edgent-jars.sh overrides via -Dedgent.core.version=...
+    -->
+    <edgent.core.version>${project.version}</edgent.core.version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-assembly-plugin</artifactId>
+          <version>2.5.3</version>
+          <configuration>
+            <finalName>edgent-${edgent.platform}-jars-${edgent.core.version}</finalName>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-remote-resources-plugin</artifactId>
+        <version>1.5</version><!--$NO-MVN-MAN-VER$-->
+        <executions>
+          <execution>
+            <id>process-resource-bundles</id>
+            <goals>
+              <goal>process</goal>
+            </goals>
+            <configuration>
+              <resourceBundles>
+                <!-- Will generate META-INF/{DEPENDENCIES,LICENSE,NOTICE} -->
+                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
+                <!-- Will generate META-INF/DISCLAIMER (incubator version) -->
+                <resourceBundle>org.apache:apache-incubator-disclaimer-resource-bundle:1.1</resourceBundle>
+              </resourceBundles>
+              <!-- Content in this directory will be appended to generated resources -->
+              <appendedResourcesDirectory>${remote-resources-maven-plugin.remote-resources.dir}</appendedResourcesDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptor>src/assembly/distribution.xml</descriptor>
+        </configuration>
+        <executions>
+          <execution>
+            <id>create-archive</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- We don't need any jars as output in this module -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>none</phase>
+          </execution>
+          <execution>
+            <id>default</id>
+            <phase>none</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>platform-java7</id>
+      <properties>
+        <edgent.platform>java7</edgent.platform>
+        <edgent.groupId.platform>.${edgent.platform}</edgent.groupId.platform>
+        <platform.java7>true</platform.java7>
+        <samples.projname.platform> (Java 7)</samples.projname.platform>
+      </properties>
+    </profile>
+    <profile>
+      <id>platform-android</id>
+      <properties>
+        <edgent.platform>android</edgent.platform>
+        <edgent.groupId.platform>.${edgent.platform}</edgent.groupId.platform>
+        <platform.android>true</platform.android>
+        <samples.projname.platform> (Android)</samples.projname.platform>
+      </properties>
+    </profile>
+  </profiles>
+
+  <dependencies>
+<!-- INJECT_DEPENDENCIES_HERE -->
+  </dependencies>
+
+</project>
diff --git a/get-edgent-jars-project/src/assembly/distribution.xml b/get-edgent-jars-project/src/assembly/distribution.xml
new file mode 100644
index 0000000..843bbf5
--- /dev/null
+++ b/get-edgent-jars-project/src/assembly/distribution.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+
+  <!--
+    NOTE: each platform (platforms/java7 and platforms/android) have their
+    own distribution project and a copy of this configuration file that
+    must be manually kept in sync. 
+   -->
+   
+  <id>bin</id>
+
+  <formats>
+    <format>tar.gz</format>
+    <format>tar.bz2</format>
+    <format>zip</format>
+  </formats>
+
+  <fileSets>
+    <fileSet>
+      <directory>${project.build.outputDirectory}/META-INF</directory>
+      <includes>
+        <include>DISCLAIMER</include>
+        <include>DEPENDENCIES</include>
+      </includes>
+      <outputDirectory/>
+    </fileSet>
+
+    <fileSet>
+      <directory>${project.build.outputDirectory}</directory>
+      <includes>
+        <include>README</include>
+      </includes>
+      <outputDirectory/>
+    </fileSet>
+
+  </fileSets>
+
+  <dependencySets>
+    <!-- Any edgent libs -->
+    <dependencySet>
+      <outputDirectory>libs</outputDirectory>
+      <scope>runtime</scope>
+      <includes>
+        <include>org.apache.edgent*</include>
+      </includes>
+      <excludes>
+        <exclude>org.apache.edgent.get-edgent-jars*</exclude>
+      </excludes>
+    </dependencySet>
+
+    <!-- All other libs are treated as external libs -->
+    <dependencySet>
+      <outputDirectory>ext</outputDirectory>
+      <scope>runtime</scope>
+      <excludes>
+        <exclude>org.apache.edgent*</exclude>
+      </excludes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
diff --git a/get-edgent-jars-project/src/main/resources/README b/get-edgent-jars-project/src/main/resources/README
new file mode 100644
index 0000000..d91c7ff
--- /dev/null
+++ b/get-edgent-jars-project/src/main/resources/README
@@ -0,0 +1,12 @@
+This bundle includes a number of artifacts with separate
+copyright notices and license terms.  Your use of an artifact
+is subject to that artifact’s licensing terms and conditions.
+
+The Apache Edgent artifacts (everything in lib) all have the
+license “Apache License Version 2.0”.
+
+Edgent’s dependent artifacts in “ext” have all been evaluated
+to be compatible with Edgent’s license.
+
+A bundled artifact's advertised license information may be
+found in the DEPENDENCIES file in this bundle.
diff --git a/template/README.md b/template/README.md
index 2c7d300..a0763fd 100644
--- a/template/README.md
+++ b/template/README.md
@@ -36,3 +36,10 @@
 PLATFORM=  # add "--platform java7"  or  "--platform android" as appropriate
 ../package-app.sh $PLATFORM --mainClass com.mycompany.app.TemplateApp --appjar target/my-app-1.0-SNAPSHOT.jar
 ```
+
+# Using get-edgent-jars-project
+
+If you don't want to use the generated uber jar or `package-app.sh`
+approaches, you can copy the application's standard jar and a
+`get-edgent-jars-project` generated jar bundle to the edge device.
+See `samples/get-edgent-jars-project`.
