-
Notifications
You must be signed in to change notification settings - Fork 7
Home
https://github.com/headwirecom/aemdc
AEM Developer Companion (AEMDC) can be used to quckly create any resource in your AEM maven project from predefined templates using the command line. Currently it is possible to create:
- templates
- components
- editable templates structure (since AEM 6.2) with template types
- content pages
- osgi configurations
- java models
- java services
- java servlets
AEMDC allows to prepare different project patterns with placeholders such as AEMDC Files (https://github.com/headwirecom/aemdc-files) for your future AEM projects and quickly setup a new project structure and project contents using the sets of command lines.
Download the last released AEMDC binary ".zip" or "tar.gz" file from (https://github.com/headwirecom/aemdc/releases).
Extract the binary to any your tools / "Program Files" directory.
Set the path to AEMDC "bin" folder in the global PATH variable. In Windows it must be under "Systems Properties -> Advanced -> Environmental Variables -> User/System Variables". You can also set the PATH in your cmd/cygwin console start command file like:
set GIT_PATH=C:\Program Files\Git
set AEMDC_PATH=C:\mytools\aemdc
set PATH=%PATH%;%GIT_PATH%\bin;%AEMDC_PATH%\bin
As example of AEMDC using the next steps show integration of "Template 1: Landing Page" from https://standards.usa.gov/page-templates/#landing-page
Prerequisites:
- Installation of AEMDC
- Installation of Maven
- Installation of Git
- Installation of Adobe Consulting AEM Lazybones Templates
YouTube Video how to use AEMDC.
-
Create a new AEM maven project "my-aem-project" using Lazybones project creator.
lazybones create aem-multimodule-project my-aem-project -PgroupId=com.headwire.myaem -PartifactId=my-aem-project -PuseNewNamingConvention=yes -PbundleInBundlesDirectory=no -PbundleArtifactId=my-aem-project.core -PcontentArtifactId=my-aem-project.ui.apps -Pversion=1.0.0-SNAPSHOT -PprojectName="My AEM Project" -PpackageGroup=my-aem-project -PaemVersion=6.2 -PappsFolderName=my-aem-project -PcontentFolderName=my-aem-project -PcreateEditableTemplatesStructure=yes -PconfFolderName=my-aem-project -PcreateDesign=yes -PdesignFolderName=my-aem-project -PcreateMainClientLib=yes -PcreateDependenciesClientLib=no -PenableCodeQuality=no -PcreateRunModeConfigFolders=no -PcreateAuthorAndPublishPerEnv=no -PreconfigureRootMapping=no -PincludeAcsAemCommons=no -PusingSlingModels=yes -PslingModelsPackage=com.headwire.myaem.core -PpurgeDamWorkflows=no
-
Create configuration properties.
Go to parent project "/my-aem-project" and create a configuration file:
aemdc config
This command creates the next configuration file.
/my-aem-project/aemdc-config.properties
Modify it for your needs, for example
TARGET_OSGI_FOLDER={{TARGET_PROJECT_ROOT}}/config
TARGET_JAVA_PACKAGE={{TARGET_JAVA_FOLDER}}/com/headwire/myaem/core
-
Checkout project with placeholders.
aemdc
In the interactive mode clone the "aemdc-files" placeholders project from GitHub.
Or use git clone command
git clone https://github.com/headwirecom/aemdc-files.git ../aemdc-files
Modify the aemdc-files templates for you needs.
-
Create editable template structure with template-type.
aemdc confstr project-with-template-type my-aem-project "ranking={Long}1" "aemdc-page-title=AEMDC HTML5 Page" "aemdc-page-description=Template for a AEMDC HTML5 content page." "componentGroup=my-aem-project" "aemdc-page-resourceType=/apps/my-aem-project/components/page/page"
Rename the "aemdc-page" template-type if you want.
-
Create structured page component.
aemdc comp contentpage page/page
-
Create paragraph component shells.
aemdc comp component-model content/hero "comp-model=com.headwire.myaem.core.models.hero.Hero" aemdc comp component-model content/graphicList aemdc comp component-model content/headings aemdc comp component-js content/tagline
-
Create component model shells.
aemdc model HeroModel.java hero/Hero.java aemdc model SampleSlingModel.java list/GraphicList.java aemdc model SampleSlingModel.java section/Headings.java
- Create site root content page.
Our custom Landing Page editable template "/conf/my-aem-project/settings/wcm/templates/landingpage" will be used for site root content page. Landing Page editable template will be created later.
aemdc page siteroot my-aem-project "sling:resourceType=/apps/my-aem-project/components/page/page" "cq:template=/conf/my-aem-project/settings/wcm/templates/landingpage"
- Create policies for editable templates.
Update policies for your needs to allow components for your editable templates. Modify the next resource
/conf/my-aem-project/settings/wcm/policies/.content.xml
-
Copy html to page component shells.
/apps/my-aem-project/components/page/page.html, body.html, ...
-
Copy html to paragraph component shells.
/apps/my-aem-project/components/content/hero /apps/my-aem-project/components/content/tagline /apps/my-aem-project/components/content/graphicList /apps/my-aem-project/components/content/headings
Put fields definition in to components dialogs.
-
Implement component models.
/src/main/java/com/headwire/myaem/core/models/hero/Hero.java /src/main/java/com/headwire/myaem/core/models/list/GraphicList.java /src/main/java/com/headwire/myaem/core/models/section/Headings.java
-
Implement component JavaScripts.
/apps/my-aem-project/components/content/tagline/tagline.js
-
Create designs assets.
Put HTML static images and fonts to designs folder under
/etc/designs/my-aem-project
-
Create client library for JavaScripts and CSS used in your site under
/etc/clientlibs/my-aem-project/main
- Update filter.xml
Modify the file
/my-aem-project/ui.apps/src/main/content/META-INF/vault/filter.xml
with
<filter root="/apps/my-aem-project"/>
<filter root="/conf/my-aem-project/settings/wcm/policies" mode="merge"/>
<filter root="/conf/my-aem-project/settings/wcm/templates" mode="merge"/>
<filter root="/conf/my-aem-project/settings/wcm/template-types"/>
<filter root="/content/my-aem-project" mode="merge"/>
<filter root="/etc/designs/my-aem-project"/>
<filter root="/etc/clientlibs/my-aem-project"/>
- Deploy project to AEM.
In the root of "my-aem-project" project run
mvn clean install -PautoInstallPackage
OR
mvn clean install -PautoInstallPackage --settings /<path-to-maven-user-settings>/settings.xml
- Create a new editable template - Author.
To create a new "landingpage" template, see [Creating a New Template - Author](https://docs.adobe.com/docs/en/aem/6-2/author/site-page-features/templates.html#Creating a New Template - Author)
Go to the Template console at
http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf
- Select Folder "my-aem-project" and click to "Create" to create a new template.
- Select "AEMDC HTML5 Page" template Type, click to "Next".
- Complete the Template Details with Template Name "landingpage" and Description "Editable template for Landing Page".
- Select Create. A confirmation will be shown, select Done to return to the template console.
- For the new template "landingpage" select Enable from the Toolbar, and again in the confirmation dialog.
-
Editing a Template Structure - Author.
Drag and Drop the next components into Layout Container
/apps/my-aem-project/components/content/hero
/apps/my-aem-project/components/content/tagline
/apps/my-aem-project/components/content/graphicList
/apps/my-aem-project/components/content/headings
Unlock structure components.
- Allow templates - Author.
-
Go to the Sites
-
Open the root Content Page "my-aem-project".
http://localhost:4502/editor.html/content/my-aem-project.html
-
Open Properties of this page (in the left top corner)
-
Open the Advanced tab.
-
Under Template Settings use Add field to specify the path(s) to your template(s).
/conf/my-aem-project/settings/wcm/templates/.*
- Setup the designs - Author.
-
In the same Advanced tab under Settings specify the path to your designs.
/etc/designs/my-aem-project
- Click "Done" to save and close dialog.
- Create basic site - Author.
-
Create a new "landingpage" Content Page
/content/my-aem-project/landingpage
-
Open the page
http://localhost:4502/editor.html/content/my-aem-project/landingpage.html
-
Edit Component contents over component dialogs or over in-place-editing.
- Publishing a Template - Author.
- In the Templates console, select the template.
- Select Publish from the toolbar to open the wizard.
- Select the Content Policies to be published in tandem.
- Select Publish from the toolbar to complete the action.