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 <[email protected]> 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/<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/<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 "[email protected]" <[email protected]>.
