May 13, 2020
Estimated Post Reading Time ~

AEM Repository Structure

AEM is built on top of the OAK jcr:repository and even though we speak about applications, assets and content, in the underlying structure everything is a node in the jcr:repository.
AEM has defined a specific structure for where things are stored. The following folders are one that you should know about
  • apps
    • All applications have a folder in here
    • Applications will be discussed later
  • bin
    • All servlets generally point to /bin
    • You shouldn't install anything here
  • content
  • All content is installed here
  • dam
    • The DAM (Digital Asset Management) area is for storing assets
    • Generally, you would create a subfolder for your application
  • usergenerated
    • Stores user-generated content
    • Generally, you would create a subfolder for your application
  • <system>
    • You should have a folder for your system or base site
    • The structure under this is for you to define, however, it is generally done in the following
      • /content/<system>/<country>/<locale>/<content>
      • This structure allows for language translations via the translation api
      • While the structure can be anything you want it is best to define it early on as changing the structure at a later date is very problematic
  • etc
    • Additional configuration items
    • There are a lot of different items in the /etc folder and I will only go through the ones I think are important to know about
    • clientlibs
      • These are the system clientlibs and while should NEVER be modified it gives you access to how AEM has done its own client libs
    • designs
      • This is where the possible designs (css/js/clientlibs) are stored for the different applications
      • It is possible for a single application to have multiple designs for different visual layouts
        • This is used if you have a single application for different countries/companies e.t.c and want to have the same components but also want them to look different
  • map
    • The location of all sling mappings
    • For the publisher, I add map.publish to the /etc folder and configure it. This will be discussed in the ui.apps section on sling mappings
  • tags
    • All tags are installed here.
    • While tags are used on the content I haven't had much use for them in the applications
  • home
    • All security objects are stored here
    • users
      • As it is named all users are stored in the user's folder
      • It is recommended if you are creating specific users as part of your application deployment to add them to a new folder
      • system
        • System users are stored in the system folder
        • If your application needs to access non-standard areas for writing data i.e. /content/usergenerated it is recommended to create a system user to do this work
      • One thing to note is that users id's are very hard to figure out programmatically and when I have created users I generally create them in the useradmin screens and export them from the package manager
      • Each user id MUST be unique
    • groups
      • As it is named all user groups are stored here
      • It is recommended if you are creating specific groups as part of your application deployment to add them to a new folder
      • Groups like users have to have a unique id so it is best to create them in useradmin and export them
  • libs
    • This is where AEM stores it's core components and structures
    • Do not write anything to this area, I will explain later how to modify AEM structures
  • system
    • This is an AEM system folder and should not be used


By aem4beginner

No comments:

Post a Comment

If you have any doubts or questions, please let us know.