{"id":24458599,"url":"https://github.com/headwirecom/aemdc","last_synced_at":"2025-06-11T16:38:26.502Z","repository":{"id":82477388,"uuid":"71897780","full_name":"headwirecom/aemdc","owner":"headwirecom","description":null,"archived":false,"fork":false,"pushed_at":"2019-12-11T16:39:31.000Z","size":445,"stargazers_count":12,"open_issues_count":2,"forks_count":7,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-13T04:08:56.803Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/headwirecom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-10-25T13:05:14.000Z","updated_at":"2025-02-05T02:33:28.000Z","dependencies_parsed_at":"2023-03-09T16:31:04.666Z","dependency_job_id":null,"html_url":"https://github.com/headwirecom/aemdc","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/headwirecom/aemdc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/headwirecom%2Faemdc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/headwirecom%2Faemdc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/headwirecom%2Faemdc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/headwirecom%2Faemdc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/headwirecom","download_url":"https://codeload.github.com/headwirecom/aemdc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/headwirecom%2Faemdc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259299126,"owners_count":22836478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-21T03:15:03.926Z","updated_at":"2025-06-11T16:38:26.467Z","avatar_url":"https://github.com/headwirecom.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AEM Developer Companion (AEMDC)\nAEMDC is a scaffolding tool to help a developer quickly create AEM templates,\ncomponents, content pages, osgi configurations, AEM 6.2 editable template structures,\njava models, services, servlets and filters from predefined templates.\n\nAEMDC best works with an AEM project created by the\n[aem lazybones archetype](https://github.com/Adobe-Consulting-Services/lazybones-aem-templates)\nbut can also be used with other project structures.\n\n# Installation\n\nDownload the released .zip or tar.gz file, extract it to your tools directory and\nset the global ENV and PATH variables like:\n\n    set JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_102\n    set GIT_HOME=C:\\Program Files\\Git\n    set AEMDC_HOME=C:\\Program Files\\aemdc\n    set PATH=%PATH%;%JAVA_HOME%\\bin;%GIT_HOME%\\bin;%AEMDC_HOME%\\bin\n\n# First Run\n\nGo to your AEM maven parent project of \"ui.apps\" or \"core\" projects and\ncreate a configuration file:\n\n\taemdc config\n\nThe command creates the next configuration file, modify it for your needs:\n\n\t/my-aem-project/aemdc-config.properties\n\nIf your project was created by the\n[aem lazybones archetype](https://github.com/Adobe-Consulting-Services/lazybones-aem-templates)\nthe properties will be auto discovered\n\n# Example Run\n\nTo create a new AEM template run:\n\n\taemdc template contentpage mycontentpage \"jcr:title=my title\" \"ph_contentpage_1:singlePropExample1_1=my test\u0026value\" \"ph_contentpage_1:singlePropExample1_2=my-test-value2\"  \"ph_contentpage_2:singlePropExample2_1=my-test-value2_1\"\n\nTarget files will be created and placeholders will be replaced with arguments defined in the command line\n\n\t\"ui.apps/src/main/content/jcr_root/apps/my-aem-project/templates/mycontentpage/.content.xml\"\n\t\"ui.apps/src/main/content/jcr_root/apps/my-aem-project/templates/mycontentpage/thumbnail.png\"\n\n# Usage - GUI\n\nTo start the GUI for AEMDC run the following command:\n\n    aemdcgui\n\nand follow the on screen instructions\n\n# Usage - Command Line\nThe following command line options are available:\n\n    aemdc [options] \u003ctype\u003e [name] [targetname] [args...]\n\n    options:\n        help               This help text.\n        help config        Shows initial default configuration properties.\n        help \u003ctype\u003e        Shows list of possible templates.\n        help \u003ctype\u003e \u003cname\u003e Shows list of possible place holders.\n        -temp=\u003cpath\u003e       Create all templates under temp folder.\n\ttype:\n\t    config      Create configuration properties file.\n\t    component   Component to be created.\n\t    compound    Set of different templates to be created.\n\t    confstr     Editable templates structure to be created.\n\t    filter      Filter java class to be created.\n\t    model       Model java class to be created.\n\t    osgi        Osgi config to be created.\n\t    page        Content page to be created.\n\t    service     Service java class to be created.\n\t    servlet     Servlet java class to be created.\n\t    template    Template to be created.\n\tname:\n\t    Source template name.\n\ttargetname:\n\t    Target resource name (folder or file w/o extension).\n\targs:\n\t    \u003cplaceholder name\u003e=\u003cvalue\u003e\n\t        Placeholder used in all template files.\n\t    \u003cproperties placeholder set name\u003e:\u003cproperty name\u003e=\u003cproperty value\u003e\n\t        Properties placeholder set used in the template xml files.\n\n\n# Creating your own Templates\n\nClone the aemdc-files from GitHub to a parallel folder to your AEM maven project and modify the templates from aemdc-files for you needs. \n\t\n\tgit clone https://github.com/headwirecom/aemdc-files.git ../aemdc-files\n\nIn the XML templates you can define placeholders with similar names as the arguments keys. The component start file name, java class name and java package in java classes will can be also replaced by placeholders \"{{ targetname }}\", \"{{ java-class }}\", \"{{ java-package }}\" and \"{{ java-interface-package }}\". See examples of used placeholders in the /aemdc-files/template/contentpage/files/..\n\n    {{ jcr:title }}\n    {{ jcr:description }}\n    {{ ranking }}\n    {{ allowedPaths }}\n    {{ ph_contentpage_1 }}\n    {{ sling:resourceType }}\n    {{ ph_contentpage_2 }}\n\nSource code of  .content.xml \n\n\t\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\t\u003cjcr:root xmlns:sling=\"http://sling.apache.org/jcr/sling/1.0\" xmlns:cq=\"http://www.day.com/jcr/cq/1.0\" xmlns:jcr=\"http://www.jcp.org/jcr/1.0\"\n\t    jcr:primaryType=\"cq:Template\"\n\t    jcr:title=\"{{ jcr:title }}\"\n\t    jcr:description=\"{{ jcr:description }}\"\n\t    ranking=\"{{ ranking }}\"\n\t    allowedPaths=\"[{{ allowedPaths }}]\"\n\t    {{ ph_contentpage_1 }}\n\t    \u003e\n\t    \u003cjcr:content\n\t        jcr:primaryType=\"cq:PageContent\"\n\t        sling:resourceType=\"{{ sling:resourceType }}\"\n\t        {{ ph_contentpage_2 }}\n\t        /\u003e\n\t\u003c/jcr:root\u003e\n\nWhen running aemdc, the placeholders will be replaced by the arguments provided\n\t\n\taemdc template contentpage mycontentpage \"jcr:title=my title\" \"jcr:description=my description\" \"ranking={Long}10\" \"sling:resourceType=my-aem-project/components/mycontentpage\" \"ph_contentpage_1:property1=value1\" \"ph_contentpage_1:property2=value2\" \"ph_contentpage_2:property3=value3\"\n\nplaceholders with the syntax ph_\u003cname\u003e_\u003cnumber\u003e are meant to be lists of name value pairs.\nThe number indicates how many spaces will be emitted before each name value pair in the output file\n\nfor example: \"ph\\_contentpage\\_2\":\n\n\t- \"ph_contentpage\" in the placeholders prefix defines the name\n\t- \"_2\" in the placeholders suffix means the offset for the property position in the modified file. 2 means 2*4 = 8 blank spaces from left.\n\n# Wiki\n\nFor more technical information and best practices see Wiki page\n\nhttps://github.com/headwirecom/aemdc/wiki\n\n# Development\n\nTo compile:\n\n\tmvn clean install\n\nExtract the generated .zip or tar.gz file from target directory to your tools directory and set the global ENV and PATH variables:\n\n    set JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_102\n    set GIT_HOME=C:\\Program Files\\Git\n    set AEMDC_HOME=C:\\Program Files\\aemdc\n    set PATH=%PATH%;%JAVA_HOME%\\bin;%GIT_HOME%\\bin;%AEMDC_HOME%\\bin\n\nGo to your AEM maven parent project of \"ui.apps\" or \"core\" projects and run: \n\n\taemdc template contentpage mycontentpage \"jcr:title=my title\" \"ph_contentpage_1:singlePropExample1_1=my test\u0026value\" \"ph_contentpage_1:singlePropExample1_2=my-test-value2\"  \"ph_contentpage_2:singlePropExample2_1=my-test-value2_1\"\n\nTarget files will be created and placeholders will be replaced with arguments defined in the command line\n\n\t\"ui.apps/src/main/content/jcr_root/apps/my-aem-project/templates/mycontentpage/.content.xml\"\n\t\"ui.apps/src/main/content/jcr_root/apps/my-aem-project/templates/mycontentpage/thumbnail.png\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheadwirecom%2Faemdc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheadwirecom%2Faemdc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheadwirecom%2Faemdc/lists"}