This project contains project templates (right now just one) for creating Adobe Experience Manager projects using the Lazybones project creator. Lazybones is a far more interactive project creation tool than Maven Archetypes. Using these templates allows you to both bootstrap your AEM project with an appropriate structure, but also enable some of the core features from ACS AEM Commons.
As of version 0.1.0, only AEM 6.3 or higher is supported. If you need to generate a project for an earlier version, you'll have to manually set the version to 0.0.38 on the command line.
In order to use this project's templates, you must first have lazybones installed. The easiest way to do this is with sdkman:
sdk install lazybones
You can also download the distribution package from BinTray, unzip it, and add it to your PATH.
Once Lazybones is installed, you can run Lazybones passing in the correct template name:
lazybones create aem-multimodule-project <directory name>
For example, to create a new project in the directory my-project
, run
lazybones create aem-multimodule-project my-project
This will prompt you to answer a number of questions about the project you want created.
Below are all of the options available in the current version. To specify an option on the command line, pass -P<parameter name>=<parameter value>
Description | Default | Parameter Name |
---|---|---|
Maven Group ID | com.myco | groupId |
Maven Artifact ID | example-project | artifactId |
Use New Module Naming Convention (core, ui.apps) | yes | useNewNamingConvention |
Put Bundle in "bundles" sub-directory | no | bundleInBundlesDirectory |
Bundle Artifact ID | example-project-bundle/example-project.core | bundleArtifactId |
Content Package Artifact ID | example-project-content/example-project.ui.apps | contentArtifactId |
Maven Version | 0.0.1-SNAPSHOT | version |
Project Name | My AEM Project | projectName |
Group name for Content Package | my-packages | packageGroup |
Target AEM Version | 6.3 | aemVersion |
Include a module to generate dispatcher configuration zip? | no | generateDispatcherArtifact |
Dispatcher Artifact ID | example-project.dispatcher | dispatcherArtifactId |
Folder to create under /apps |
my-aem-project | appsFolderName |
Folder to use under /content |
my-aem-project | contentFolderName |
Create AEM Editable Templates folders? | yes | createEditableTemplatesStructure |
Folder to create under /conf |
my-aem-project | confFolderName |
Create a site design? | no | createDesign |
Design folder name | my-aem-project | designFolderName |
Create client libraries in /apps | yes | createClientLibsInApps |
Create a main client library? | yes | createMainClientLib |
Create a dependencies client library | yes | createDependenciesClientLib |
Enable code quality checks? | yes | enableCodeQuality |
Create Environment-Specific Config Folders? | yes | createRunModeConfigFolders |
Environment Names | localdev,dev,qa,stage,prod | envNames |
Create Author and Publish Config Folders per Environment? | yes | createAuthorAndPublishPerEnv |
Include ACS AEM Commons? | yes | includeAcsAemCommons |
Include ACS AEM Commons as a sub-package? | yes | includeAcsAemCommonsSubPackage |
Include ACS AEM Commons 'min' package | yes | includeAcsAemCommonsMinPackage |
Enable ACS AEM Commons Error Handler? | yes | enableErrorHandler |
Default Error Page Path | /content/my-aem-project/errors/404 | defaultErrorPath |
Define Error Page Folder for /content/my-aem-project ? | no | defineErrorPageFolder |
Error Page Folder for /content/my-aem-project | errors | errorFolder |
Enable ACS AEM Commons Pages Reference Provider? | yes | enablePagesReferenceProvider |
Enable ACS AEM Commons Design Reference Provider? | yes | enableDesignReferenceProvider |
Enable ACS AEM Commons Design Html Library Manager? | yes | enableDhlm |
Enable ACS AEM Commons Versioned Client Libraries? | yes | enableVersionedClientLibs |
Using Sling Models? | yes | usingSlingModels |
Sling Models Package | '' | slingModelsPackage |
Purge DAM Workflows? | yes | purgeDamWorkflows |
DAM Workflow Retention Period (days) | 7 | purgeDamWorkflowRetention |
Several of the prompts ask if you want to enable specific ACS AEM Commons features. Links to the feature documentation can be found below:
- ACS AEM Commons Error Handler
- ACS AEM Commons Pages Reference Provider
- ACS AEM Commons Design Reference Provider
- ACS AEM Commons Design Html Library Manager
- ACS AEM Commons Versioned Clientlibs Rewriter
During development, it is necessary to do a local installation of the lazybones template(s) and then test creation against the installed version. To do this:
- From the root directory, run the command
./gradlew installAllTemplates
- From a different directory, run the command
lazybones create aem-multimodule-project <SNAPSHOT VERSION> <NEW DIRECTORY NAME>
To publish, you must have a gradle.properties
file in the project root with this content:
bintrayUsername=<your bintray username>
bintrayApiKey=<your bintray API key>
Then, update the VERSION
file for the template you want to publish to be a non-SNAPSHOT version and run
./gradlew publishTemplateMyTemplate
Replacing publishTemplateMyTemplate
with a camel-cased version of your template name (e.g. publishTemplateAemMultimoduleProject
)
After publishing, you'll need to log into bintray to release the published ZIP file.