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:50 UTC

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

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>.