rework get-edgent-jars.sh, add get-edgent-jars-project

The new approach uses the same maven "distribution"
mechanism that as the source release's "mvn package -Pdistribution".
The commonality of the generated bundles is goodness
and the included DEPENDENCIES (licensing doc) file
is valuable for users.
At this time the original script is retained as
old-get-edgent-jars.sh.
Updated relevant doc.
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`.