You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2018/01/21 22:02:49 UTC

[sling-whiteboard] branch feature/sling-7276 created (now 429f87d)

This is an automated email from the ASF dual-hosted git repository.

andysch pushed a change to branch feature/sling-7276
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git.


      at 429f87d  Added the Sling Project Archetype to the Whiteboard

This branch includes the following new commits:

     new 429f87d  Added the Sling Project Archetype to the Whiteboard

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
['"commits@sling.apache.org" <co...@sling.apache.org>'].

[sling-whiteboard] 01/01: Added the Sling Project Archetype to the Whiteboard

Posted by an...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

andysch pushed a commit to branch feature/sling-7276
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 429f87de491b88e277489ed11b1ee786854fc004
Author: Andreas Schaefer <as...@headwire.com>
AuthorDate: Sun Jan 21 14:00:30 2018 -0800

    Added the Sling Project Archetype to the Whiteboard
---
 project-archetype/README.md                        |  78 ++++
 project-archetype/build.run.and.deploy.test.sh     |  58 +++
 project-archetype/pom.xml                          |  77 ++++
 .../META-INF/archetype-post-generate.groovy        | 140 +++++++
 .../META-INF/maven/archetype-metadata.xml          | 167 +++++++++
 .../.archetype-config/archetype.properties         |  34 ++
 .../resources/archetype-resources/README.All.md    | 130 +++++++
 .../resources/archetype-resources/README.NotAll.md |  90 +++++
 .../main/resources/archetype-resources/all/pom.xml | 108 ++++++
 .../archetype-resources/core.example/pom.xml       | 177 +++++++++
 .../SampleRequestModel.java                        |  56 +++
 .../src/main/java/servlet/ByPathServlet.java       |  74 ++++
 .../main/java/servlet/ByResourceTypeServlet.java   |  80 ++++
 .../servlet/ByPathServletTest.java                 |  36 ++
 .../resources/archetype-resources/core/pom.xml     | 171 +++++++++
 .../src/main/resources/archetype-resources/pom.xml | 416 +++++++++++++++++++++
 .../archetype-resources/ui.apps.example/README.md  |  32 ++
 .../archetype-resources/ui.apps.example/pom.xml    | 120 ++++++
 .../src/main/content/META-INF/vault/filter.xml     |  43 +++
 .../src/main/content/META-INF/vault/settings.xml   |  20 +
 .../jcr_root/apps/__appsFolderName__/.content.xml  |  27 ++
 .../apps/__appsFolderName__/home/.content.xml      |  23 ++
 .../apps/__appsFolderName__/home/body.html         |  27 ++
 .../apps/__appsFolderName__/home/head.html         |  26 ++
 .../apps/__appsFolderName__/install/.content.xml   |  26 ++
 .../apps/__appsFolderName__/page/.content.xml      |  22 ++
 .../apps/__appsFolderName__/page/body.html         |  24 ++
 .../apps/__appsFolderName__/page/footer.html       |  22 ++
 .../apps/__appsFolderName__/page/head.html         |  26 ++
 .../apps/__appsFolderName__/page/page.html         |  38 ++
 .../content/__contentFolderName__/.content.xml     |  21 ++
 .../__contentFolderName__/home/.content.xml        |  23 ++
 .../home/welcome/.content.xml                      |  25 ++
 .../resources/archetype-resources/ui.apps/pom.xml  | 120 ++++++
 .../src/main/content/META-INF/vault/filter.xml     |  42 +++
 .../src/main/content/META-INF/vault/settings.xml   |  20 +
 .../jcr_root/apps/__appsFolderName__/.content.xml  |  27 ++
 .../apps/__appsFolderName__/install/.content.xml   |  26 ++
 .../content/__contentFolderName__/.content.xml     |  27 ++
 .../resources/projects/all/archetype.properties    |  35 ++
 .../src/test/resources/projects/all/goal.txt       |   0
 .../projects/allDeleted/archetype.properties       |  35 ++
 .../test/resources/projects/allDeleted/goal.txt    |   0
 .../projects/allMerged/archetype.properties        |  35 ++
 .../src/test/resources/projects/allMerged/goal.txt |   0
 .../resources/projects/notAll/archetype.properties |  35 ++
 .../src/test/resources/projects/notAll/goal.txt    |   0
 .../projects/notAllDeleted/archetype.properties    |  35 ++
 .../test/resources/projects/notAllDeleted/goal.txt |   0
 .../projects/notAllMerged/archetype.properties     |  35 ++
 .../test/resources/projects/notAllMerged/goal.txt  |   0
 51 files changed, 2909 insertions(+)

diff --git a/project-archetype/README.md b/project-archetype/README.md
new file mode 100644
index 0000000..3e1f1ea
--- /dev/null
+++ b/project-archetype/README.md
@@ -0,0 +1,78 @@
+### Sling Template through Maven Archetype
+
+#### Introduction
+
+This archetype will create a Sling project that can be deployed on the Sling 10. In contrast to
+the Apache Sling Maven Archetypes this one is geared towards creating a full project and not
+just a single module.
+
+The **core** and **ui.apps** are empty Maven modules that are ready for you code.
+
+There are also **example** modules with the extension of **.exmaple**. Please copy whatever you
+want from these module into the appropriate module. The example modules are not intended to be
+installed into Sling.
+Both type (regular and example) have the same structure and so you can copy them over without
+any problems.
+
+If this archetype was generated with the **optionAll** property set to **y** then an **all** package
+will be created that contains both the **core** and the **ui.apps**. This enables the developer
+to easily deploy all modules in that project as a single unit (see below).
+
+If this archetype was generated with the **optionAll** property set to **n** then the **core**
+bundle will be deployed as embedded bundle of the **ui.apps** package.
+
+#### Why a Separate All Package
+
+For a simple project that only contains one or two modules (bundle and content package) this seems
+like overkill and the same can be accomplished using the ui.apps as single deployment package.
+
+That said for a more serious project where there are multiple bundles and content packages this
+becomes difficult to handle. Not only needs one Content Package to take the role of the single
+deployment package which requires it to add the other modules as dependencies. This can be confusing
+and so the dedicated All content package solves that. It contains the dependencies and the logic
+how to build and deploy the entire project in one step.
+
+#### Archetype Properties
+
+|Name                 |Description                                                                   |
+|:--------------------|:-----------------------------------------------------------------------------|
+|groupId              |Maven Group Id|
+|artifactId           |Maven Artifact Id|
+|version              |Version of your project|
+|artifactName         |Project Label used in the Descriptions and Module Name|
+|packageGroup         |Name of the Package Folder where the ui.apps is installed in (/etc/packages)|
+|appsFolderName       |Folder name under /apps where components etc are installed|
+|contentFolderName    |Folder name under /content where the content is added to|
+|package              |Root Package of the Java Code|
+|slingModelSubPackage |Sub Package where Sling Models should be place in with no trailing dots|
+|slingHostName        |Host Name or IP Address of the server where Sling is hosted|
+|slingPort            |Port to which your Sling instance is bound to|
+|optionAll            |Determines if the project is created with an **all** package as single deployed unit (y/n)|
+|optionExample        |Determines if the examples are kept separate (s), merged into the regular modules (m) or deleted (d)|
+
+#### Usage
+
+Until this project is fully released in the public Maven Repo this is how to use it:
+
+* Build this project locally
+
+    mvn clean install
+
+* Go to your folder where you want your generated project to be
+* Generate it with:
+
+    mvn archetype:generate -DarchetypeCatalog=local
+
+* Select this Archetype from a given list
+* Provide the requested properties
+
+#### Build and Install Integration Test
+
+There is a simple integration test setup with this archetype.
+You can run this one using the attached Unix shell script:
+
+    sh build.run.and.deploy.test.sh
+
+The properties for the integration test can be found under
+**/test/resources/projects/[all/notAll]/archetype.properties**.
+
diff --git a/project-archetype/build.run.and.deploy.test.sh b/project-archetype/build.run.and.deploy.test.sh
new file mode 100755
index 0000000..98908ab
--- /dev/null
+++ b/project-archetype/build.run.and.deploy.test.sh
@@ -0,0 +1,58 @@
+#!/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.
+
+dir=`pwd`
+echo "Build the Sling Project Archetype in folder: $dir"
+mvn clean install
+
+testFolder=$dir/target/test-classes/projects/allMerged/project/sample-test-all
+
+echo
+echo
+echo "--------------------------------------------------"
+echo "   Build and Deploy the All (Merged) Test Project"
+echo "--------------------------------------------------"
+echo
+echo
+
+cd $testFolder
+mvn clean install -P autoInstallAll
+
+testFolder=$dir/target/test-classes/projects/notAllMerged/project/sample-test-ui
+
+echo
+echo
+echo "---------------------------------------------------"
+echo "Build and Deploy the Not All (Merged) Test Project"
+echo "---------------------------------------------------"
+echo
+echo
+
+cd $testFolder
+mvn clean install -P autoInstallPackage
+
+echo
+echo
+echo "------------------------------------------"
+echo "         Done"
+echo "------------------------------------------"
+echo
+echo
+
+cd $dir
diff --git a/project-archetype/pom.xml b/project-archetype/pom.xml
new file mode 100644
index 0000000..2084a4e
--- /dev/null
+++ b/project-archetype/pom.xml
@@ -0,0 +1,77 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling-archetype-parent</artifactId>
+        <version>6-SNAPSHOT</version>
+        <relativePath />
+    </parent>
+
+    <groupId>org.apache.sling</groupId>
+    <artifactId>sling-project-archetype</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>maven-archetype</packaging>
+
+    <name>Sling Project Archetype</name>
+
+    <build>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.archetype</groupId>
+                <artifactId>archetype-packaging</artifactId>
+                <version>${archetype.version}</version>
+            </extension>
+        </extensions>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <artifactId>maven-archetype-plugin</artifactId>
+                    <version>3.0.1</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
+    </dependencies>
+
+    <description>
+        This archetype is creating a full Sling Project composed of
+        a OSGi Bundle and a Content Package which can be deployed
+        to the Sling using specific profiles. It also contains two shadow
+        folders that provide example code / files which are not part
+        of the default build but can be easily copied into the active modules.
+
+        If the project was created with the **optionAll** property set
+        to **y** (yes) then an **All** package is created with acts as
+        the single deployment unit of all bundles and packages in that
+        project.
+        Otherwise the **ui.apps** package is the deployment unit.
+    </description>
+</project>
diff --git a/project-archetype/src/main/resources/META-INF/archetype-post-generate.groovy b/project-archetype/src/main/resources/META-INF/archetype-post-generate.groovy
new file mode 100644
index 0000000..e8d3975
--- /dev/null
+++ b/project-archetype/src/main/resources/META-INF/archetype-post-generate.groovy
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+
+import java.util.regex.Pattern
+import org.apache.commons.io.FileUtils
+
+def rootDir = new File(request.getOutputDirectory() + "/" + request.getArtifactId())
+
+def coreBundle = new File(rootDir, "core")
+def coreSrc = new File(coreBundle, "src")
+def coreExampleBundle = new File(rootDir, "core.example")
+def coreExampleSrc = new File(coreExampleBundle, "src")
+
+def uiAppsPackage = new File(rootDir, "ui.apps")
+def uiAppsSrc = new File(uiAppsPackage, "src")
+def uiAppsExamplePackage = new File(rootDir, "ui.apps.example")
+def uiAppsExampleSrc = new File(uiAppsExamplePackage, "src")
+
+def uiAppsPom = new File(uiAppsPackage, "pom.xml")
+def allPackage = new File(rootDir, "all")
+def rootPom = new File(rootDir, "pom.xml")
+def readme = new File(rootDir, "README.md")
+def readmeAll = new File(rootDir, "README.All.md")
+def readmeNotAll = new File(rootDir, "README.NotAll.md")
+
+def optionAll = request.getProperties().get("optionAll")
+def optionExample = request.getProperties().get("optionExample")
+
+
+// helper methods
+
+// Remove the given Module from the parent POM
+def removeModule(pomFile, moduleName) {
+    def pattern = Pattern.compile("\\s*<module>" + Pattern.quote(moduleName) + "</module>", Pattern.MULTILINE)
+    def pomContent = pomFile.getText("UTF-8")
+    pomContent = pomContent.replaceAll(pattern, "")
+    pomFile.newWriter().withWriter { w ->
+        w << pomContent
+    }
+}
+
+// Either remove the tag lines or the line plus the content in between
+// forAll = true: removes all content between @startForNotAll@ and @endForNotAll@
+// forAll = false: emoves all content between @startForAll@ and @endForAll@
+def removeTags(pomFile, forAll) {
+    if(!forAll) {
+        // Remove all lines for Not All and remove all content inside for All
+        def startPattern = Pattern.compile("\\s*<!-- @startForNotAll@ .*-->")
+        def endPattern = Pattern.compile("\\s*<!-- @endForNotAll@ .*-->")
+        def wrapPattern = Pattern.compile("\\s*<!-- @startForAll@ [\\s\\S]*?<!-- @endForAll@ .*-->")
+
+        def pomContent = pomFile.getText("UTF-8")
+        pomContent = pomContent.replaceAll(startPattern, "")
+        pomContent = pomContent.replaceAll(endPattern, "")
+        pomContent = pomContent.replaceAll(wrapPattern, "")
+        pomFile.newWriter().withWriter { w ->
+            w << pomContent
+        }
+    } else {
+        // Remove all lines for All and remove all content inside for Not All
+        def wrapPattern = Pattern.compile("\\s*<!-- @startForNotAll@ [\\s\\S]*?<!-- @endForNotAll@ .*-->")
+        def startPattern = Pattern.compile("\\s*<!-- @startForAll@ .*-->")
+        def endPattern = Pattern.compile("\\s*<!-- @endForAll@ .*-->")
+
+        def pomContent = pomFile.getText("UTF-8")
+        pomContent = pomContent.replaceAll(wrapPattern, "")
+        pomContent = pomContent.replaceAll(startPattern, "")
+        pomContent = pomContent.replaceAll(endPattern, "")
+        pomFile.newWriter().withWriter { w ->
+            w << pomContent
+        }
+    }
+}
+
+if(optionAll == "n") {
+    // Remove All Package / Module
+    assert allPackage.deleteDir()
+    removeModule(rootPom, "all")
+    // Remove content for 'All' and remove tag lines for Not All
+    removeTags(uiAppsPom, false)
+    // Delete the Readme.md for All
+    assert readmeAll.delete()
+    // Rename the Not For All Readme to the Readme.md file
+    assert readmeNotAll.renameTo(readme)
+} else {
+    // Remove content for 'Not All' and remove tag lines for All
+    removeTags(uiAppsPom, true)
+    // Delete the Readme.md for Not All
+    assert readmeNotAll.delete()
+    // Rename the For All Readme to the Readme.md file
+    assert readmeAll.renameTo(readme)
+}
+
+if(optionExample == "m") {
+    // Examples should be merged into the regular modules and then the example folders removed
+    // Delete core source folder (if exists) and then rename core example source to core source
+    if(coreSrc.exists()) {
+        FileUtils.deleteDirectory(coreSrc)
+    }
+    if(coreExampleBundle.exists()) {
+        assert coreExampleSrc.renameTo(coreSrc);
+        FileUtils.deleteDirectory(coreExampleBundle)
+    }
+    removeModule(rootPom, "core.example")
+    // Delete ui.apps source folder (if exists) and then rename ui.apps example source to ui.apps source
+    if(uiAppsSrc.exists()) {
+        FileUtils.deleteDirectory(uiAppsSrc)
+    }
+    if(uiAppsExamplePackage.exists()) {
+        assert uiAppsExampleSrc.renameTo(uiAppsSrc);
+        FileUtils.deleteDirectory(uiAppsExamplePackage)
+    }
+    removeModule(rootPom, "ui.apps.example")
+} else if(optionExample == "d") {
+    // Examples should be deleted
+    // Remove core.example
+    if(coreExampleBundle.exists()) {
+        FileUtils.deleteDirectory(coreExampleBundle)
+    }
+    removeModule(rootPom, "core.example")
+    // Remove ui.apps.example
+    if(uiAppsExamplePackage.exists()) {
+        FileUtils.deleteDirectory(uiAppsExamplePackage)
+    }
+    removeModule(rootPom, "ui.apps.example")
+}
diff --git a/project-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/project-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 0000000..d8fac86
--- /dev/null
+++ b/project-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,167 @@
+<?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.
+-->
+<archetype-descriptor
+        xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
+        name="sling-project-archetype"
+        xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+>
+    <requiredProperties>
+        <requiredProperty key="version">
+            <defaultValue>1.0.0-SNAPSHOT</defaultValue>
+        </requiredProperty>
+
+        <!--
+           The Project Label used a prefix to the name of modules and is part of the descriptions
+        -->
+        <requiredProperty key="artifactName"/>
+        <!--
+           This is the folder name of the group underneath of /etc/packages where the content package
+           is installed
+        -->
+        <requiredProperty key="packageGroup">
+            <defaultValue>${groupId}</defaultValue>
+        </requiredProperty>
+        <!--
+            The folder name underneath /apps where components etc is installed from content packages.
+            This folder separates projects from each other and should be unique within your deployment
+            environment to avoid overrides
+        -->
+        <requiredProperty key="appsFolderName"/>
+        <!--
+            The folder name underneath /content where content is installed. In general this is the same
+            value as the appsFolderName but can be different
+        -->
+        <requiredProperty key="contentFolderName"/>
+        <!--
+            Package of the generated Service classes
+        -->
+        <requiredProperty key="package">
+            <defaultValue>${groupId}</defaultValue>
+        </requiredProperty>
+        <!--
+            Sub Package for the Sling Models (it is prepended with the package specified above)
+        -->
+        <requiredProperty key="slingModelSubPackage">
+            <!--<defaultValue>models</defaultValue>-->
+        </requiredProperty>
+        <!--
+            Target Host Name or IP Address of the Deployment Sling Server
+        -->
+        <requiredProperty key="slingHostName">
+            <defaultValue>localhost</defaultValue>
+        </requiredProperty>
+        <!--
+            Target Port of the Deployment Sling Server
+        -->
+        <requiredProperty key="slingPort">
+            <defaultValue>8080</defaultValue>
+        </requiredProperty>
+        <!-- If set to yes a project is created with an All Packager rather than deploying the bundle inside ui.apps -->
+        <requiredProperty key="optionAll">
+            <defaultValue>n</defaultValue>
+            <validationRegex>^(y|n)$</validationRegex>
+        </requiredProperty>
+        <!-- Indicates if the examples should be a separate module, merged into or ditched -->
+        <requiredProperty key="optionExample">
+            <defaultValue>s</defaultValue>
+            <validationRegex>^(s|m|d)$</validationRegex>
+        </requiredProperty>
+    </requiredProperties>
+    <fileSets>
+        <fileSet encoding="UTF-8">
+            <directory></directory>
+            <includes>
+                <include>README.*.md</include>
+            </includes>
+        </fileSet>
+    </fileSets>
+
+    <!--AS NOTE: the only dynamic change that can be made here is to add ${rootArtifactId} to the id and name
+                 as the dir must map the folder we have in archetype-resources.
+    -->
+    <modules>
+        <module id="core" dir="core" name="core">
+            <fileSets>
+                <fileSet filtered="true" packaged="true" encoding="UTF-8">
+                    <directory>src/main/java</directory>
+                    <includes>
+                        <include>**/*.java</include>
+                    </includes>
+                </fileSet>
+                <fileSet filtered="true" packaged="true" encoding="UTF-8">
+                    <directory>src/test/java</directory>
+                    <includes>
+                        <include>**/*.java</include>
+                    </includes>
+                </fileSet>
+            </fileSets>
+        </module>
+        <module id="core.example" dir="core.example" name="core.example">
+            <fileSets>
+                <fileSet filtered="true" packaged="true" encoding="UTF-8">
+                    <directory>src/main/java</directory>
+                    <includes>
+                        <include>**/*.java</include>
+                    </includes>
+                </fileSet>
+                <fileSet filtered="true" packaged="true" encoding="UTF-8">
+                    <directory>src/test/java</directory>
+                    <includes>
+                        <include>**/*.java</include>
+                    </includes>
+                </fileSet>
+            </fileSets>
+        </module>
+        <module id="ui.apps" dir="ui.apps" name="ui.apps">
+            <fileSets>
+                <fileSet filtered="true" encoding="UTF-8">
+                    <directory>src/main/content</directory>
+                    <includes>
+                        <include>**/*.xml</include>
+                        <include>**/*.html</include>
+                    </includes>
+                </fileSet>
+            </fileSets>
+        </module>
+        <module id="ui.apps.example" dir="ui.apps.example" name="ui.apps.example">
+            <fileSets>
+                <fileSet filtered="true" encoding="UTF-8">
+                    <directory>src/main/content</directory>
+                    <includes>
+                        <include>**/*.xml</include>
+                        <include>**/*.html</include>
+                    </includes>
+                </fileSet>
+            </fileSets>
+        </module>
+        <module id="all" dir="all" name="all">
+            <!--<fileSets>-->
+                <!--<fileSet filtered="true" encoding="UTF-8">-->
+                    <!--<directory>src/main/content</directory>-->
+                    <!--<includes>-->
+                        <!--<include>**/*.xml</include>-->
+                        <!--<include>**/*.html</include>-->
+                    <!--</includes>-->
+                <!--</fileSet>-->
+            <!--</fileSets>-->
+        </module>
+    </modules>
+</archetype-descriptor>
diff --git a/project-archetype/src/main/resources/archetype-resources/.archetype-config/archetype.properties b/project-archetype/src/main/resources/archetype-resources/.archetype-config/archetype.properties
new file mode 100644
index 0000000..062882a
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/.archetype-config/archetype.properties
@@ -0,0 +1,34 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# This file contains all the properties you used
+# to build your project from the archetype
+#
+package=${package}
+version=${version}
+groupId=${groupId}
+artifactName=${artifactName}
+packageGroup=${packageGroup}
+appsFolderName=${appsFolderName}
+contentFolderName=${contentFolderName}
+slingModelSubPackage=${slingModelSubPackage}
+slingHostName=${slingHostName}
+slingPort=${slingPort}
+optionAll=${optionAll}
diff --git a/project-archetype/src/main/resources/archetype-resources/README.All.md b/project-archetype/src/main/resources/archetype-resources/README.All.md
new file mode 100644
index 0000000..6c5e7ba
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/README.All.md
@@ -0,0 +1,130 @@
+### Maven Project generated from Maven Archetype
+
+#### License
+
+    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.
+
+#### Introduction
+
+This project was created by the Full Project Sling Maven Archetype which created
+three modules:
+
+1. **core**: OSGi Bundle which is deployed as OSGi Bundle to Sling which includes your
+             Servlets, Filters, Sling Models and much more. This module is **not intended**
+             to contain Sling Content.
+2. **ui.apps**: JCR Content Module which is used to install a JCR Package into Sling
+                by using **Composum**. For that it must be installed and the Composum
+                Package Manager must be whitelisted.
+3. **all**: This is another JCR Content Module but it is only used to install the
+            other two modules. 
+
+There are also two more modules that provide some examples with the same name plus
+the **.example** extension. This modules should not be deployed as is but rather
+examples that you want to use should be copied to the core or ui.apps module.
+The structure of both modules are the same and so copying them over just be
+quite simple.
+
+#### Why the All Package
+
+Most real projects have many different OSGi bundles, Content Packages, Configuration
+Modules and many more. Deploying them one by one is cumbersome and can lead to
+inconsitency and to a lot of overhead in a Continious Integration system.
+The **All** package allows you to deploy all theses artifacts in one swoop or it allows
+you to deploy them to multiple targets by just repeating the **All** deployment.
+
+##### Adding a new Module
+
+If you create a new Maven module then you need to add them to the **All** POM as
+well to include them into the All deployment. These are the steps:
+
+1. Add the dependency to the new module in the All POM
+2. Add the module to the **maven-vault-plugin** definition
+    1. If this is a content package then into the **subPackages**
+    2. If this is an OSGi Bundle then into the **embeddeds**
+
+##### Package Filter
+
+In any multi-content-package environment the developer needs to pay close attention
+to the **content filtering** in the **META-INF/vault/filter.xml** as this can lead
+to hard to detect issues. Please make sure that:
+
+1. Exclude **/apps/&lt;apps-folder-name>/install** from any of your content package
+   as in that folder the **All** package is installing the bundles into
+2. Make sure that content packages are not removing each other contents. The rule is
+   that each content package has their own sub folder inside **/apps/&lt;apps-folder-name>**
+   and avoid overlap.
+3. Any shared folders like **overlays** need to be separated from each other.
+   It is a good idea to limit your filter to smallest subset possible to avoid
+   future issues if another package needs to place their overlays into the
+   same folder. 
+
+The package filter is a **mask** that tells Sling which part of the JCR tree
+your package maintains and after the deployment that part of the JCR tree will
+be the same as in your package. All missing ndoes in Sling will be created, all
+existing nodes will be updated and all missing nodes in your package will be
+deleted in Sling.
+
+
+#### Why a JCR Package instead of a Content Bundle
+
+There a several reasons to use a JCR Package instead of a Content Bundle
+but for the most important reason is that a JCR Package allows the **Sling
+Tooling** to update a single file rather than an entire Bundle and also
+to import a Node from Sling into the project.
+
+
+#### Attention:
+
+Due to the way Apache Maven Archetypes work both **example** modules are added
+to the parent POM's module list. Please **remove** them after you created them
+to avoid the installation of these modules into Sling.
+At the end of the parent POM you will find the lines below. Remove the lines
+with **core.example** and **ui.apps.example**.
+
+    <modules>
+        <module>core</module>
+        <module>core.example</module>
+        <module>ui.apps</module>
+        <module>ui.apps.example</module>
+        <module>all</module>
+    </modules>
+
+#### Build and Installation
+
+The project is built quite simple:
+
+    mvn clean install
+    
+To install the project **autoInstallAll**:
+
+    mvn clean install -P autoInstallAll
+
+##### ATTENTION
+
+It is not a good idea to deploy code with both approaches.
+Choose one and stick with it as you can either loose a bundle
+or the bundle is not updated during installation.
+
+In case of a mishape the package and bundles needs to deinstalled
+manullay:
+
+1. Rmove /apps/${appsFolderName}/install folder
+2. Uninstall the package using the package manager
+3. Remove the package from /etc/packages including the snapshots if they are still there
+4. Rmove the Bundle using the OSGi Console (/system/console/bundles)
+
diff --git a/project-archetype/src/main/resources/archetype-resources/README.NotAll.md b/project-archetype/src/main/resources/archetype-resources/README.NotAll.md
new file mode 100644
index 0000000..3e69d10
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/README.NotAll.md
@@ -0,0 +1,90 @@
+### Maven Project generated from Maven Archetype
+
+#### License
+
+    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.
+
+#### Introduction
+
+This project was created by the Sling Project Maven Archetype which created
+two modules:
+
+1. **core**: OSGi Bundle which is deployed as OSGi Bundle to Sling which includes your
+             Servlets, Filters, Sling Models and much more. This module is **not intended**
+             to contain Sling Content.
+2. **ui.apps**: JCR Content Module which is used to install a JCR Package into Sling
+                by using **Composum**. For that it must be installed and the Composum
+                Package Manager must be whitelisted.
+
+There are also two more modules that provide some examples with the same name plus
+the **.example** extension. This modules should not be deployed as is but rather
+examples that you want to use should be copied to the core or ui.apps module.
+The structure of both modules are the same and so copying them over just be
+quite simple.
+
+#### Attention:
+
+Due to the way Apache Maven Archetypes work both **example** modules are added
+to the parent POM's module list. Please **remove** them after you created them
+to avoid the installation of these modules into Sling.
+At the end of the parent POM you will find the lines below. Remove the lines
+with **core.example** and **ui.apps.example**.
+
+    <modules>
+        <module>core</module>
+        <module>core.example</module>
+        <module>ui.apps</module>
+        <module>ui.apps.example</module>
+    </modules>
+
+#### Why a JCR Package instead of a Content Bundle
+
+There a several reasons to use a JCR Package instead of a Content Bundle
+but for the most important reason is that a JCR Package allows the **Sling
+Tooling** to update a single file rather than an entire Bundle and also
+to import a Node from Sling into the project.
+
+
+#### Build and Installation
+
+The project is built quite simple:
+
+    mvn clean install
+    
+To install the OSGi bundle use the project **autoInstallBundle**:
+
+    mvn clean install -P autoInstallBundle
+
+To install the Content together with the core bundle
+use the project **autoInstallPackage**:
+
+    mvn clean install -P autoInstallPackage
+
+##### ATTENTION
+
+It is probably best not to deploy the OSGi Bundle alone as this
+may lead to conflicts with the package deployment.
+
+In case of a mishape the package and bundles needs to deinstalled
+manullay:
+
+1. Rmove /apps/${appsFolderName}/install folder
+2. Uninstall the package using the package manager
+3. Remove the package from /etc/packages including the snapshots if they are still there
+4. Rmove the Bundle using the OSGi Console (/system/console/bundles)
+
diff --git a/project-archetype/src/main/resources/archetype-resources/all/pom.xml b/project-archetype/src/main/resources/archetype-resources/all/pom.xml
new file mode 100644
index 0000000..b567044
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/all/pom.xml
@@ -0,0 +1,108 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>\${rootArtifactId}</artifactId>
+        <groupId>\${groupId}</groupId>
+        <version>\${version}</version>
+    </parent>
+
+    <artifactId>all</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>\${artifactName} - All</name>
+    <description>\${package} - \${artifactName}: All-in-one deployment content package</description>
+
+    <properties>
+        <maven.test.skip>true</maven.test.skip>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>\${project.groupId}</groupId>
+            <artifactId>core</artifactId>
+            <version>\${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>\${project.groupId}</groupId>
+            <artifactId>ui.apps</artifactId>
+            <version>\${project.version}</version>
+            <type>content-package</type>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <packageType>container</packageType>
+                    <embeddedTarget>/apps/\${appsFolderName}/install</embeddedTarget>
+                    <embeddeds>
+                        <embedded>
+                            <groupId>\${project.groupId}</groupId>
+                            <artifactId>core</artifactId>
+                            <filter>true</filter>
+                        </embedded>
+                    </embeddeds>
+                    <subPackages>
+                        <subPackage>
+                            <groupId>\${project.groupId}</groupId>
+                            <artifactId>ui.apps</artifactId>
+                            <filter>true</filter>
+                        </subPackage>
+                    </subPackages>
+                    <!-- This gives the Package a recognizable name in the Package Manager by prepending the Artifact Id of the Project -->
+                    <name>\${rootArtifactId}-\${artifactId}</name>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>autoInstallAll</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.wcm.maven.plugins</groupId>
+                        <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-package</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/core.example/pom.xml b/project-archetype/src/main/resources/archetype-resources/core.example/pom.xml
new file mode 100644
index 0000000..7125281
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core.example/pom.xml
@@ -0,0 +1,177 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>\${rootArtifactId}</artifactId>
+        <groupId>\${groupId}</groupId>
+        <version>\${version}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>\${artifactId}</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>\${artifactName} - Core Example</name>
+    <description>
+        This is the Example Module for the Sample Core module (core).
+        The basic idea is to have a clean 'core' module in which you
+        can choose what examples you want to use rather than having
+        to delete a bunch of examples.
+
+        Pleaes copy examples from this module into your 'core' module
+        if you want it to use it in your project. The project structure
+        is the same and so you can copy the files from the source to
+        the target folder wihtout having to adjust paths or packages.
+        This module is not part of the Root Project's build and you can
+        either keep it around or you delete it if you don't need
+        it anymore.
+
+        The profile to deploy the bundle is removed to avoid accidental
+        deployments.
+    </description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency>
+                        <Sling-Model-Packages>\${package}.\${slingModelSubPackage}</Sling-Model-Packages>
+                        <_dsannotations>*</_dsannotations>
+                        <_metatypeannotations>*</_metatypeannotations>
+                        <_removeheaders>
+                            Embed-Dependency,
+                            Private-Package,
+                            Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>7</source>
+                    <target>7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+                <configuration>
+                    <slingUrl>http://\${sling.host}:\${sling.port}/system/console</slingUrl>
+                    <user>\${sling.user}</user>
+                    <password>\${sling.password}</password>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.models.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <!--Commented out to avoid accidental deployment -->
+    <!--<profiles>-->
+        <!--<profile>-->
+            <!--<id>autoInstallBundle</id>-->
+            <!--<build>-->
+                <!--<plugins>-->
+                    <!--<plugin>-->
+                        <!--<groupId>org.apache.sling</groupId>-->
+                        <!--<artifactId>maven-sling-plugin</artifactId>-->
+                        <!--<executions>-->
+                            <!--<execution>-->
+                                <!--<id>install-bundle</id>-->
+                                <!--<goals>-->
+                                    <!--<goal>install</goal>-->
+                                <!--</goals>-->
+                            <!--</execution>-->
+                        <!--</executions>-->
+                    <!--</plugin>-->
+                <!--</plugins>-->
+            <!--</build>-->
+        <!--</profile>-->
+    <!--</profiles>-->
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/__slingModelSubPackage__/SampleRequestModel.java b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/__slingModelSubPackage__/SampleRequestModel.java
new file mode 100644
index 0000000..33c71aa
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/__slingModelSubPackage__/SampleRequestModel.java
@@ -0,0 +1,56 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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.
+ */
+package ${package}.${slingModelSubPackage};
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.SlingObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.Session;
+
+@Model(adaptables = {Resource.class, SlingHttpServletRequest.class})
+public class SampleRequestModel {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SampleRequestModel.class);
+
+    @SlingObject
+    private ResourceResolver resourceResolver;
+
+    public SampleRequestModel() {
+        LOGGER.trace("Model Instance created");
+    }
+
+    /** @return User Name of the Current User **/
+    public String getCurrentUser() {
+        String answer = "No User";
+
+        // Adapt to a session and get the current User ID.
+        Session session = resourceResolver.adaptTo(Session.class);
+        LOGGER.trace("Found Session from Resolver: '{}'", session);
+        if(session != null) {
+            answer = session.getUserID();
+        }
+        return answer;
+    }
+}
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByPathServlet.java b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByPathServlet.java
new file mode 100644
index 0000000..44dc8b6
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByPathServlet.java
@@ -0,0 +1,74 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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.
+ */
+package ${package}.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by path
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.paths=/hello-world-servlet"
+    }
+)
+@SuppressWarnings("serial")
+public class ByPathServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByPathServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC ${symbol_escape}"-//IETF//DTD HTML 2.0//EN${symbol_escape}">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello World!</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByResourceTypeServlet.java b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByResourceTypeServlet.java
new file mode 100644
index 0000000..cde87c9
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core.example/src/main/java/servlet/ByResourceTypeServlet.java
@@ -0,0 +1,80 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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.
+ */
+package ${package}.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by resource type
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.resourceTypes=sling/servlet/default",
+        "sling.servlet.selectors=hello",
+        "sling.servlet.extensions=html",
+    }
+)
+@SuppressWarnings("serial")
+public class ByResourceTypeServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByResourceTypeServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        Resource resource = request.getResource();
+
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC ${symbol_escape}"-//IETF//DTD HTML 2.0//EN${symbol_escape}">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello ");
+        w.write(resource.getPath());
+        w.write("</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/project-archetype/src/main/resources/archetype-resources/core.example/src/test/java/__packageInPathFormat__/servlet/ByPathServletTest.java b/project-archetype/src/main/resources/archetype-resources/core.example/src/test/java/__packageInPathFormat__/servlet/ByPathServletTest.java
new file mode 100644
index 0000000..91cfe03
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core.example/src/test/java/__packageInPathFormat__/servlet/ByPathServletTest.java
@@ -0,0 +1,36 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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.
+ */
+package ${package}.servlet;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for By Path Servlet.
+ */
+public class ByPathServletTest extends TestCase {
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testByPathServlet() {
+        assertTrue(true);
+    }
+    
+}
diff --git a/project-archetype/src/main/resources/archetype-resources/core/pom.xml b/project-archetype/src/main/resources/archetype-resources/core/pom.xml
new file mode 100644
index 0000000..8a81b01
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/core/pom.xml
@@ -0,0 +1,171 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>\${rootArtifactId}</artifactId>
+        <groupId>\${groupId}</groupId>
+        <version>\${version}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>\${artifactId}</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>\${artifactName} - Core</name>
+    <description>
+        This is an empty OSGi Bundle which can be used
+        to compile and deploy OSGi Services to Sling.
+
+        This Bundle can be deployed using the Profile
+        "autoInstallBundle" but that should not be used
+        together with the "ui.apps" Profile "autoInstallAll"
+        as they are not deployed the same way and can lead
+        to undesired issues during deployment (bundle not
+        updated or not working at all).
+    </description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency>
+                        <Sling-Model-Packages>\${package}.\${slingModelSubPackage}</Sling-Model-Packages>
+                        <_dsannotations>*</_dsannotations>
+                        <_metatypeannotations>*</_metatypeannotations>
+                        <_removeheaders>
+                            Embed-Dependency,
+                            Private-Package,
+                            Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>7</source>
+                    <target>7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+                <configuration>
+                    <slingUrl>http://\${sling.host}:\${sling.port}/system/console</slingUrl>
+                    <user>\${sling.user}</user>
+                    <password>\${sling.password}</password>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.models.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <!-- ATTENTION: It is highly recomended not to deploy this with this Profile if this Bundle was or will be deployed with the All package -->
+        <profile>
+            <id>autoInstallBundle</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.sling</groupId>
+                        <artifactId>maven-sling-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-bundle</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/pom.xml b/project-archetype/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..0e7369d
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,416 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>\${groupId}</groupId>
+    <artifactId>\${rootArtifactId}</artifactId>
+    <version>\${version}</version>
+    <packaging>pom</packaging>
+
+    <description>\${artifactName} Parent POM</description>
+
+    <!--
+        ATTENTION: This archetype creates two modules: 'core' and 'ui.apps'
+                   Both of these modules are empty and you can start filling
+                   it in with your files.
+                   There are two other modules: 'core.example' and 'ui.apps.example'
+                   with have the same structure but have provide examples
+                   for showing a Page with the usage of a Sling Model. The
+                   idea is that a developer can copy any file he wants into
+                   the regular module. Unfortunately the Maven Archetype
+                   generating this project is adding all four modules to
+                   this POM. Even though the POMs for the example modules
+                   will not deploy it is best to remove them from this POM.
+
+                   Look for the modules at the end of this file.
+    -->
+
+    <properties>
+        <sling.host>\${slingHostName}</sling.host>
+        <sling.port>\${slingPort}</sling.port>
+        <sling.user>admin</sling.user>
+
+        <sling.password>admin</sling.password>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+        <release.plugin.version>2.5.3</release.plugin.version>
+        <source.plugin.version>3.0.1</source.plugin.version>
+        <resource.plugin.version>3.0.2</resource.plugin.version>
+        <jar.plugin.version>3.0.2</jar.plugin.version>
+        <enforcer.plugin.version>1.4.1</enforcer.plugin.version>
+        <compiler.plugin.version>3.6.1</compiler.plugin.version>
+        <bundle.plugin.version>2.5.4</bundle.plugin.version>
+        <clean.plugin.version>3.0.0</clean.plugin.version>
+        <installer.plugin.version>2.5.2</installer.plugin.version>
+        <surfire.plugin.version>2.20</surfire.plugin.version>
+        <failsafe.plugin.version>2.20</failsafe.plugin.version>
+        <deploy.plugin.version>2.8.2</deploy.plugin.version>
+        <sling.plugin.version>2.3.2</sling.plugin.version>
+        <dependency.plugin.version>3.0.0</dependency.plugin.version>
+        <build.helper.plugin.version>3.0.0</build.helper.plugin.version>
+        <vcmio.plugin.version>1.6.0</vcmio.plugin.version>
+        <filevault-package.plugin.version>1.0.0</filevault-package.plugin.version>
+
+        <sling.models.api.version>1.3.6</sling.models.api.version>
+        <jsr305.version>3.0.2</jsr305.version>
+        <sling.settings.version>1.3.8</sling.settings.version>
+        <sling.commons.osgi.version>2.4.0</sling.commons.osgi.version>
+        <jackrabbit-api.version>2.14.4</jackrabbit-api.version>
+        <commons-lang.version>2.6</commons-lang.version>
+        <jmock-junit4.version>2.8.2</jmock-junit4.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Maven Release Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <scmCommentPrefix>[maven-scm] :</scmCommentPrefix>
+                    <preparationGoals>clean install</preparationGoals>
+                    <goals>install</goals>
+                    <releaseProfiles>release</releaseProfiles>
+                </configuration>
+            </plugin>
+            <!-- Maven Source Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <inherited>true</inherited>
+            </plugin>
+            <!-- Maven Resources Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <!-- Maven Jar Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+            <!-- Maven Enforcer Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-maven</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireMavenVersion>
+                                    <message>Project must be built with Maven 3.1.0 or higher</message>
+                                    <version>[3.1.0,)</version>
+                                </requireMavenVersion>
+                                <requireJavaVersion>
+                                    <message>Project must be compiled with Java 7 or higher</message>
+                                    <version>1.7.0</version>
+                                </requireJavaVersion>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Maven Compiler Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${archetype.java.version}</source>
+                    <target>${archetype.java.version}</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!-- Maven Release Plugin -->
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>${release.plugin.version}</version>
+                </plugin>
+                <!-- Maven Source Plugin -->
+                <plugin>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>${source.plugin.version}</version>
+                </plugin>
+                <!-- Maven Resources Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>${resource.plugin.version}</version>
+                </plugin>
+                <!-- Maven Jar Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${jar.plugin.version}</version>
+                </plugin>
+                <!-- Maven Enforcer Plugin -->
+                <plugin>
+                    <artifactId>maven-enforcer-plugin</artifactId>
+                    <version>${enforcer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Compiler Plugin -->
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${compiler.plugin.version}</version>
+                </plugin>
+
+                <!-- Maven Clean Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>${clean.plugin.version}</version>
+                </plugin>
+                <!-- Maven Installer Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>${installer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Surefire Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${surfire.plugin.version}</version>
+                </plugin>
+                <!-- Maven Failsafe Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>${failsafe.plugin.version}</version>
+                </plugin>
+                <!-- Maven Deploy Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>${deploy.plugin.version}</version>
+                </plugin>
+                <!-- Apache Sling Plugin -->
+                <plugin>
+                    <groupId>org.apache.sling</groupId>
+                    <artifactId>maven-sling-plugin</artifactId>
+                    <version>${sling.plugin.version}</version>
+                </plugin>
+                <!-- Content Package Plugin -->
+                <plugin>
+                    <groupId>org.apache.jackrabbit</groupId>
+                    <artifactId>filevault-package-maven-plugin</artifactId>
+                    <version>${filevault-package.plugin.version}</version>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                        <group>\${packageGroup}</group>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>io.wcm.maven.plugins</groupId>
+                    <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                    <version>${vcmio.plugin.version}</version>
+                    <configuration>
+                        <serviceURL>http://${sling.host}:${sling.port}/bin/cpm/</serviceURL>
+                        <userId>${sling.user}</userId>
+                        <password>${sling.password}</password>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                        <group>\${packageGroup}</group>
+                    </configuration>
+                </plugin>
+                <!-- Apache Felix Bundle Plugin -->
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>${bundle.plugin.version}</version>
+                    <inherited>true</inherited>
+                </plugin>
+                <!-- Maven Dependency Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>${dependency.plugin.version}</version>
+                </plugin>
+                <!-- Build Helper Maven Plugin -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>${build.helper.plugin.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+
+    <!-- ====================================================================== -->
+    <!-- D E P E N D E N C I E S                                                -->
+    <!-- ====================================================================== -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- OSGi Dependencies -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.core</artifactId>
+                <version>6.0.0</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations: @Version, @ProviderType, @ConsumerType -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.annotation</artifactId>
+                <version>6.0.1</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations for DS and metatype -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.component.annotations</artifactId>
+                <version>1.3.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.metatype.annotations</artifactId>
+                <version>1.3.0</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.compendium</artifactId>
+                <version>4.2.0</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Web Application API -->
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>javax.servlet-api</artifactId>
+                <version>3.1.0</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- dependency injection annotations -->
+            <dependency>
+                <groupId>javax.inject</groupId>
+                <artifactId>javax.inject</artifactId>
+                <version>1</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- JCR API -->
+            <dependency>
+                <groupId>javax.jcr</groupId>
+                <artifactId>jcr</artifactId>
+                <version>2.0</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic Logging -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>${slf4japi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>com.google.code.findbugs</groupId>
+                <artifactId>jsr305</artifactId>
+                <version>${jsr305.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Apache Sling Dependencies -->
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.api</artifactId>
+                <version>${slingapi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.settings</artifactId>
+                <version>${sling.settings.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.commons.osgi</artifactId>
+                <version>${sling.commons.osgi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.models.api</artifactId>
+                <version>${sling.models.api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>jackrabbit-api</artifactId>
+                <version>${jackrabbit-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Support -->
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>${commons-lang.version}</version>
+            </dependency>
+
+            <!-- Basic dependencies for Unit Tests -->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jmock</groupId>
+                <artifactId>jmock-junit4</artifactId>
+                <version>${jmock-junit4.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>${slf4japi.version}</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/README.md b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/README.md
new file mode 100644
index 0000000..01c4a48
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/README.md
@@ -0,0 +1,32 @@
+### ui.apps Example
+
+#### License
+
+    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.
+
+#### Introduction
+
+This is a Content Package rather than an OSGi Content Bundle meaning
+that JCR Nodes are described with **.content.xml** files rather than with
+**.json** files. This example provides a content node home page together
+with the Home and Page resource type HTML code.
+
+#### Dependencies
+
+This content package depends on the Sling Model **SampleRequestModel**
+from the **core.example**. 
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/pom.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/pom.xml
new file mode 100644
index 0000000..dd9d029
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/pom.xml
@@ -0,0 +1,120 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>\${rootArtifactId}</artifactId>
+        <groupId>\${groupId}</groupId>
+        <version>\${version}</version>
+    </parent>
+
+    <artifactId>\${artifactId}</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>\${artifactName} - UI Apps Example</name>
+    <description>
+        This is the Example Module for the Sample UI Apps module (ui.apps).
+        The basic idea is to have a clean 'ui.apps' module in which you
+        can choose what examples you want to use rather than having
+        to delete a bunch of examples.
+
+        Pleaes copy examples from this module into your 'ui.apps' module
+        if you want it to use it in your project. The project structure
+        is the same and so you can copy the files from the source to
+        the target folder wihtout having to adjust paths or packages.
+        This module is not part of the Root Project's build and you can
+        either keep it around or you delete it if you don't need
+        it anymore.
+
+        The profile to deploy the bundle is removed to avoid accidental
+        deployments.
+    </description>
+
+    <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+    <dependencies>
+        <dependency>
+            <groupId>\${project.groupId}</groupId>
+            <artifactId>core</artifactId>
+            <version>\${project.version}</version>
+        </dependency>
+    </dependencies>
+    <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <filterSource>\${basedir}/src/main/content/META-INF/vault/filter.xml</filterSource>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>package</goal>
+                        </goals>
+                        <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+                        <configuration>
+                            <embeddedTarget>/apps/\${appsFolderName}/install</embeddedTarget>
+                            <embeddeds>
+                                <embedded>
+                                    <groupId>\${project.groupId}</groupId>
+                                    <artifactId>core</artifactId>
+                                    <filter>true</filter>
+                                </embedded>
+                            </embeddeds>
+                        </configuration>
+                        <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+    <!--Commented out to avoid accidental deployment -->
+    <!--<profiles>-->
+        <!--<profile>-->
+            <!--<id>autoInstallPackage</id>-->
+            <!--<build>-->
+                <!--<plugins>-->
+                    <!--<plugin>-->
+                        <!--<groupId>io.wcm.maven.plugins</groupId>-->
+                        <!--<artifactId>wcmio-content-package-maven-plugin</artifactId>-->
+                        <!--<executions>-->
+                            <!--<execution>-->
+                                <!--<id>install-package</id>-->
+                                <!--<goals>-->
+                                    <!--<goal>install</goal>-->
+                                <!--</goals>-->
+                            <!--</execution>-->
+                        <!--</executions>-->
+                    <!--</plugin>-->
+                <!--</plugins>-->
+            <!--</build>-->
+        <!--</profile>-->
+    <!--</profiles>-->
+    <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/filter.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/filter.xml
new file mode 100644
index 0000000..8b0461e
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/filter.xml
@@ -0,0 +1,43 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+
+<workspaceFilter version="1.0">
+    <!--
+        Any node that will contain customer data needs to be excluded
+        otherwise a Pacakge Installation will wipe them.
+
+        If there is a mix then all provided nodes must be included and
+        all custom nodes excluded.
+
+        If unsure what to do then go to the Composum Package Manager
+        (/bin/packages.html) and create a test package. To to the package
+        filter list and add filter entries until all of the app provides
+        nodes are included but none of the customer generatedd nodes.
+
+        Also any sub pckage of this module needs to exclude /apps/${appsFolderName}/install
+        folder otherwise they wipe all installed bundles.
+    -->
+    <filter root="/content/${contentFolderName}"/>
+    <!--
+        Need to exclude the Install folder otherwise the Bundle will be undeployed
+        as it is in the '/apps/${appsFolderName}/install' folder (see the 'all'
+        package).
+    -->
+    <filter root="/apps/${appsFolderName}">
+        <exclude pattern="/apps/${appsFolderName}/install/.*"/>
+    </filter>
+</workspaceFilter>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/settings.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/settings.xml
new file mode 100644
index 0000000..3424413
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/META-INF/vault/settings.xml
@@ -0,0 +1,20 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<vault version="1.0">
+  <ignore name=".svn"/>
+  <ignore name=".git"/>
+</vault>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml
new file mode 100644
index 0000000..8f9da39
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Root"
+          jcr:description="${artifactName} Apps Root folder"
+/>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/.content.xml
new file mode 100644
index 0000000..9dcbf39
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/.content.xml
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Home Page Component"
+          jcr:description="${artifactName} Home Page Component with HTL"
+          sling:resourceSuperType="${appsFolderName}/page"
+>
+</jcr:root>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/body.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/body.html
new file mode 100644
index 0000000..aa6ce9d
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/body.html
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+<h2>${symbol_dollar}{properties.jcr:title}</h2>
+<p>${artifactName} Home Page from Sling Project Archetype</p>
+<p><b><i>Description: </i></b>${symbol_dollar}{properties.jcr:description}</p>
+<div data-sly-use.sampleRequest="${package}.${slingModelSubPackage}.SampleRequestModel">
+	<p>Current User: ${symbol_dollar}{sampleRequest.currentUser}</p>
+</div>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/head.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/head.html
new file mode 100644
index 0000000..cbf8586
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/home/head.html
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>${artifactName} Home Page</title>
+<!-- ${symbol_dollar}{properties.jcr:title} -->
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml
new file mode 100644
index 0000000..5f7ce25
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="Install Folder"
+/>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/.content.xml
new file mode 100644
index 0000000..5b4a278
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/.content.xml
@@ -0,0 +1,22 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Page Component"
+          jcr:description="${artifactName} Page Component with HTL"
+>
+</jcr:root>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/body.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/body.html
new file mode 100644
index 0000000..7741f7a
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/body.html
@@ -0,0 +1,24 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+<h2>${symbol_dollar}{properties.jcr:title}</h2>
+<p>${artifactName} Page from Sling Project Archetype</p>
+<p><b>Description: </b>${symbol_dollar}{properties.jcr:description}</p>
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/footer.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/footer.html
new file mode 100644
index 0000000..b1c2e6b
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/footer.html
@@ -0,0 +1,22 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+${artifactName} Footer
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/head.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/head.html
new file mode 100644
index 0000000..0dd5a53
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/head.html
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>${artifactName} Page</title>
+<!-- ${symbol_dollar}{properties.jcr:title} -->
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/page.html b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/page.html
new file mode 100644
index 0000000..b0d2d52
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/apps/__appsFolderName__/page/page.html
@@ -0,0 +1,38 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<!-- /*
+    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.
+*/ -->
+<!DOCTYPE html>
+<html>
+<head>
+    <sly data-sly-include="${symbol_dollar}{'head.html'}"/>
+</head>
+    <body>
+        <h3>Navigation</h3>
+        <div data-sly-list.child="${symbol_dollar}{resource.listChildren}">
+            <a href="${symbol_dollar}{child.path}.html">${symbol_dollar}{child.name}</a>
+        </div>
+        <br/>
+        <sly data-sly-include="${symbol_dollar}{'body.html'}"/>
+        <footer>
+            <sly data-sly-include="${symbol_dollar}{'footer.html'}"/>
+        </footer>
+    </body>
+</html>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/.content.xml
new file mode 100644
index 0000000..0b21be7
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/.content.xml
@@ -0,0 +1,21 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Content Root"
+          jcr:description="${artifactName} Content Root Page"
+/>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/.content.xml
new file mode 100644
index 0000000..ddda733
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/.content.xml
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Home"
+          jcr:description="${artifactName} Home Page"
+          sling:resourceType="${appsFolderName}/home"
+>
+</jcr:root>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/welcome/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/welcome/.content.xml
new file mode 100644
index 0000000..acdc0f8
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps.example/src/main/content/jcr_root/content/__contentFolderName__/home/welcome/.content.xml
@@ -0,0 +1,25 @@
+<?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.
+--><jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Welcome"
+          jcr:description="${artifactName} Welcome Page"
+          sling:resourceType="${appsFolderName}/page"
+>
+</jcr:root>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/pom.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/pom.xml
new file mode 100644
index 0000000..1a10ede
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/pom.xml
@@ -0,0 +1,120 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>\${rootArtifactId}</artifactId>
+        <groupId>\${groupId}</groupId>
+        <version>\${version}</version>
+    </parent>
+
+    <artifactId>\${artifactId}</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>\${artifactName} - UI Apps</name>
+    <description>
+        This is an empty JCR Package where the JCR Content
+        can be deployed with.
+
+        For a "not all" package this JCR Package will embedd
+        the "core" bundle. It can be deployed with the
+        "autoInstallPackage" profile.
+
+        For an "all" package this only provides the content
+        of the project which is deployed in the root with
+        the "autoInstallAll" profile.
+
+        It is advisable to deploy any bundles or packages
+        in one manner as deploying bundles inside a package
+        and through the System Console can lead to unexpected
+        and errorneous situations.
+    </description>
+
+    <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+    <dependencies>
+        <dependency>
+            <groupId>\${project.groupId}</groupId>
+            <artifactId>core</artifactId>
+            <version>\${project.version}</version>
+        </dependency>
+    </dependencies>
+    <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <filterSource>\${basedir}/src/main/content/META-INF/vault/filter.xml</filterSource>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>package</goal>
+                        </goals>
+                        <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+                        <configuration>
+                            <embeddedTarget>/apps/\${appsFolderName}/install</embeddedTarget>
+                            <embeddeds>
+                                <embedded>
+                                    <groupId>\${project.groupId}</groupId>
+                                    <artifactId>core</artifactId>
+                                    <filter>true</filter>
+                                </embedded>
+                            </embeddeds>
+                        </configuration>
+                        <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- @startForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+    <profiles>
+        <!-- ATTENTION: It is highly recomended not to deploy this with this Profile if this Package was or will be deployed with the All package -->
+        <profile>
+            <id>autoInstallPackage</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.wcm.maven.plugins</groupId>
+                        <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-package</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <!-- @endForNotAll@ This is used for the Post Generation Handling. Do not alter or remove -->
+</project>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/filter.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/filter.xml
new file mode 100644
index 0000000..207c148
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/filter.xml
@@ -0,0 +1,42 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<workspaceFilter version="1.0">
+    <!--
+        Any node that will contain customer data needs to be excluded
+        otherwise a Pacakge Installation will wipe them.
+
+        If there is a mix then all provided nodes must be included and
+        all custom nodes excluded.
+
+        If unsure what to do then go to the Composum Package Manager
+        (/bin/packages.html) and create a test package. To to the package
+        filter list and add filter entries until all of the app provides
+        nodes are included but none of the customer generatedd nodes.
+
+        Also any sub pckage of this module needs to exclude /apps/${appsFolderName}/install
+        folder otherwise they wipe all installed bundles.
+    -->
+    <filter root="/content/${contentFolderName}"/>
+    <!--
+        Need to exclude the Install folder otherwise the Bundle will be undeployed
+        as it is in the '/apps/${appsFolderName}/install' folder (see the 'all'
+        package).
+    -->
+    <filter root="/apps/${appsFolderName}">
+        <exclude pattern="/apps/${appsFolderName}/install/.*"/>
+    </filter>
+</workspaceFilter>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/settings.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/settings.xml
new file mode 100644
index 0000000..3424413
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/META-INF/vault/settings.xml
@@ -0,0 +1,20 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<vault version="1.0">
+  <ignore name=".svn"/>
+  <ignore name=".git"/>
+</vault>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml
new file mode 100644
index 0000000..7155879
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/.content.xml
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName} Root"
+          jcr:description="${artifactName} Apps Root folder"
+/>
\ No newline at end of file
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml
new file mode 100644
index 0000000..5f7ce25
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/apps/__appsFolderName__/install/.content.xml
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="Install Folder"
+/>
diff --git a/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/content/__contentFolderName__/.content.xml b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/content/__contentFolderName__/.content.xml
new file mode 100644
index 0000000..1abc513
--- /dev/null
+++ b/project-archetype/src/main/resources/archetype-resources/ui.apps/src/main/content/jcr_root/content/__contentFolderName__/.content.xml
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="${artifactName}"
+          jcr:description="${artifactName} Content Root"
+/>
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/all/archetype.properties b/project-archetype/src/test/resources/projects/all/archetype.properties
new file mode 100644
index 0000000..b408de5
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/all/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.all
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.all.group
+artifactId=sample-test-all
+artifactName=Sample Test All
+packageGroup=org.apache.sling.all.install
+appsFolderName=testAppsAll
+contentFolderName=testContentAll
+slingModelSubPackage=testModelAll
+slingHostName=localhost
+slingPort=8080
+optionAll=y
+optionExample=s
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/all/goal.txt b/project-archetype/src/test/resources/projects/all/goal.txt
new file mode 100644
index 0000000..e69de29
diff --git a/project-archetype/src/test/resources/projects/allDeleted/archetype.properties b/project-archetype/src/test/resources/projects/allDeleted/archetype.properties
new file mode 100644
index 0000000..3005eaf
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/allDeleted/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.all
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.all.group
+artifactId=sample-test-all
+artifactName=Sample Test All
+packageGroup=org.apache.sling.all.install
+appsFolderName=testAppsAll
+contentFolderName=testContentAll
+slingModelSubPackage=testModelAll
+slingHostName=localhost
+slingPort=8080
+optionAll=y
+optionExample=d
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/allDeleted/goal.txt b/project-archetype/src/test/resources/projects/allDeleted/goal.txt
new file mode 100644
index 0000000..e69de29
diff --git a/project-archetype/src/test/resources/projects/allMerged/archetype.properties b/project-archetype/src/test/resources/projects/allMerged/archetype.properties
new file mode 100644
index 0000000..f7ee987
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/allMerged/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.all
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.all.group
+artifactId=sample-test-all
+artifactName=Sample Test All
+packageGroup=org.apache.sling.all.install
+appsFolderName=testAppsAll
+contentFolderName=testContentAll
+slingModelSubPackage=testModelAll
+slingHostName=localhost
+slingPort=8080
+optionAll=y
+optionExample=m
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/allMerged/goal.txt b/project-archetype/src/test/resources/projects/allMerged/goal.txt
new file mode 100644
index 0000000..e69de29
diff --git a/project-archetype/src/test/resources/projects/notAll/archetype.properties b/project-archetype/src/test/resources/projects/notAll/archetype.properties
new file mode 100644
index 0000000..3c15d8a
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/notAll/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.ui
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.ui.group
+artifactId=sample-test-ui
+artifactName=Sample Test UI
+packageGroup=org.apache.sling.ui.install
+appsFolderName=testAppsUI
+contentFolderName=testContentUI
+slingModelSubPackage=testModelUI
+slingHostName=localhost
+slingPort=8080
+optionAll=n
+optionExample=s
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/notAll/goal.txt b/project-archetype/src/test/resources/projects/notAll/goal.txt
new file mode 100644
index 0000000..e69de29
diff --git a/project-archetype/src/test/resources/projects/notAllDeleted/archetype.properties b/project-archetype/src/test/resources/projects/notAllDeleted/archetype.properties
new file mode 100644
index 0000000..d814e01
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/notAllDeleted/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.ui
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.ui.group
+artifactId=sample-test-ui
+artifactName=Sample Test UI
+packageGroup=org.apache.sling.ui.install
+appsFolderName=testAppsUI
+contentFolderName=testContentUI
+slingModelSubPackage=testModelUI
+slingHostName=localhost
+slingPort=8080
+optionAll=n
+optionExample=d
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/notAllDeleted/goal.txt b/project-archetype/src/test/resources/projects/notAllDeleted/goal.txt
new file mode 100644
index 0000000..e69de29
diff --git a/project-archetype/src/test/resources/projects/notAllMerged/archetype.properties b/project-archetype/src/test/resources/projects/notAllMerged/archetype.properties
new file mode 100644
index 0000000..0b0d291
--- /dev/null
+++ b/project-archetype/src/test/resources/projects/notAllMerged/archetype.properties
@@ -0,0 +1,35 @@
+#####################################################################
+# 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.
+#####################################################################
+
+#
+# Test Project Configuration
+#
+package=org.apache.sling.ui
+version=1.0.0-SNAPSHOT
+groupId=org.apache.sling.ui.group
+artifactId=sample-test-ui
+artifactName=Sample Test UI
+packageGroup=org.apache.sling.ui.install
+appsFolderName=testAppsUI
+contentFolderName=testContentUI
+slingModelSubPackage=testModelUI
+slingHostName=localhost
+slingPort=8080
+optionAll=n
+optionExample=m
\ No newline at end of file
diff --git a/project-archetype/src/test/resources/projects/notAllMerged/goal.txt b/project-archetype/src/test/resources/projects/notAllMerged/goal.txt
new file mode 100644
index 0000000..e69de29

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.