All Projects → wttech → gradle-aem-multi

wttech / gradle-aem-multi

Licence: Apache-2.0 License
Example Multi-Module AEM application built by Gradle Build System

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
SCSS
7915 projects
shell
77523 projects

Projects that are alternatives of or similar to gradle-aem-multi

aem-intellij-plugin
IntelliJ Platform plugin for AEM (Adobe Experience Manager).
Stars: ✭ 26 (-16.13%)
Mutual labels:  cq, aem, adobe-experience-manager, aem-tools
wcm-io-wcm
Extensions for AEM authoring and AEM applications.
Stars: ✭ 17 (-45.16%)
Mutual labels:  aem, adobe-experience-manager
aem-akamai-replication-agent
How to create custom replication agents in AEM using Akamai as an example.
Stars: ✭ 33 (+6.45%)
Mutual labels:  aem, adobe-experience-manager
aem-osgi-annotation-demo
Demonstrates OSGi Declarative Services Annotations along side Felix SCR Annotations.
Stars: ✭ 42 (+35.48%)
Mutual labels:  aem, adobe-experience-manager
cookbook-cq
Chef cookbook for Adobe CQ (aka AEM)
Stars: ✭ 20 (-35.48%)
Mutual labels:  cq, aem
burp-aem-scanner
Burp Scanner extension to fingerprint and actively scan instances of the Adobe Experience Manager CMS. It checks the website for common misconfigurations and security holes.
Stars: ✭ 60 (+93.55%)
Mutual labels:  aem, adobe-experience-manager
etoolbox-authoring-kit
Offers a set of tools that create Granite UI authoring interfaces for Adobe Experience Manager components from Java code. This is a comprehensive solution that makes different widgets work in a coordinated manner, provides greater interactivity in AEM dialogs, and introduces additional features (customizable data lists, options selection, etc.)
Stars: ✭ 93 (+200%)
Mutual labels:  cq, aem
AEM-DataLayer
Simple DataLayer API for Adobe Experience Manager
Stars: ✭ 33 (+6.45%)
Mutual labels:  aem, apache-sling
aem-docker-getting-started
Getting started guide for development with Adobe Experience Manager and Docker.
Stars: ✭ 38 (+22.58%)
Mutual labels:  aem, adobe-experience-manager
aem-clientlib-async
Create AEM clientlibs that can output 'async', 'defer' and 'onload' attributes on your HTML script elements.
Stars: ✭ 45 (+45.16%)
Mutual labels:  aem, adobe-experience-manager
wcm-io-tooling
Tooling for Maven and IDEs.
Stars: ✭ 12 (-61.29%)
Mutual labels:  aem, adobe-experience-manager
aem-stubs
Tool for providing sample data for AEM applications in a simple and flexible way. Stubbing server on AEM, no separate needed.
Stars: ✭ 40 (+29.03%)
Mutual labels:  aem, aem-tools
Gradle Aem Plugin
Swiss army knife for Adobe Experience Manager related automation. Environment setup & incremental AEM application build which takes seconds, not minutes.
Stars: ✭ 145 (+367.74%)
Mutual labels:  gradle, aem
aem-touch-ui-validation
AEM Touch UI Validation Library
Stars: ✭ 40 (+29.03%)
Mutual labels:  aem, adobe-experience-manager
AEM-UP
🚀 AEM Author, Dispatcher and Publisher in one VM managed via Vagrant and provisioned via Ansible
Stars: ✭ 18 (-41.94%)
Mutual labels:  aem, aem-tools
aemtools
AEM Tools is Intellij IDEA plugin containing Adobe Experience Manager related features
Stars: ✭ 49 (+58.06%)
Mutual labels:  aem, aem-tools
aem-dispatcher-experiments
Experiments to demonstrate the impact of the Dispatcher and it's configuration parameters.
Stars: ✭ 41 (+32.26%)
Mutual labels:  aem, adobe-experience-manager
wcm-io-caconfig
Context-Aware Configuration for AEM applications.
Stars: ✭ 16 (-48.39%)
Mutual labels:  aem, adobe-experience-manager
Slice
Slice - a framework which simplifies Sling/AEM development by using dependency injection pattern and mapping Sling resources into Java objects
Stars: ✭ 64 (+106.45%)
Mutual labels:  aem, apache-sling
vlsi-release-plugins
A set of plugins to simplify Gradle release tasks
Stars: ✭ 30 (-3.23%)
Mutual labels:  gradle

WTT logo

Gradle Status Apache License, Version 2.0, January 2004

Gradle AEM Plugin logo

AEM Multi-Project Example

Description

This project could be used to start developing long-term project based on AEM.

To start developing application/library based on AEM it is recommended to use Gradle AEM Single instead.

Documentation for AEM plugin is available in project Gradle AEM Plugin.

Screenshot

Gradle AEM Multi - Develop task

Table of Contents

Features

Main motivation of this project is to automate all aspects of AEM development and make it a breeze.


Archetyping:

Environment:

Back-end:

Front-end:

Testing:

Maintenance:

Quickstart

  1. Fork project using command:

    git clone https://github.com/wttech/gradle-aem-multi.git && cd gradle-aem-multi && sh gradlew fork

    and specify properties:

    Fork Props Dialog

    and wait until project is forked then enter configured target directory.

  2. Setup user specific project configuration using command:

    sh gradlew props

    and specify properties:

    Fork Props Dialog

  3. Setup local AEM instances with dependencies and AEM dispatcher (see prerequisites) then build application using command:

    sh gradlew environmentHosts
    sh gradlew setup

    and wait till complete AEM environment will be ready to use.

  4. Develop continuously application using command:

    sh gradlew

    which is an alias for:

    sh gradlew develop

    or to just deploy AEM application (without running anything else):

    sh gradlew :app:aem:all:packageDeploy

Prerequisites

Tested on:

  • Java 1.8, 11
  • Gradle 6.7
  • Adobe AEM 6.5
  • Docker 2.4.0.0

Structure

  • app - source code generated from Adobe AEM Archetype 23 and adapted to Gradle / Gradle AEM Plugin,
  • env - resources and configuration related with setting up local AEM instances and AEM dispatcher,
  • test - integration and functional tests requiring full environment setup.

Environment

Project is configured to have local environment which consists of:

  • native AEM instances running on local file system,
  • virtualized Apache HTTP Server with AEM Dispatcher module running on Docker (official httpd image).

Assumptions:

Building

  1. Use command gradlew so that Gradle in version according to project will be downloaded automatically.
  2. Deploy application:
    • Full assembly and run all tests
      • sh gradlew <=> sh gradlew :develop
    • Only assembly package:
      • sh gradlew :app:aem:all:packageDeploy
    • Only single package or bundle:
      • sh gradlew :app:aem:core::bundleInstall,
      • sh gradlew :app:aem:ui.apps:packageDeploy,
      • sh gradlew :app:aem:ui.content:packageDeploy.
  3. Rebuilding front-end only: sh gradlew :app:aem:ui.frontend:build

Tooling

  1. Monitoring errors in logs: sh gradlew instanceTail
  2. Synchronizing JCR content from AEM to local file system: sh gradlew :app:aem:ui.content:packageSync
  3. Interactively updating HTTPD Virtual-Host & AEM Dispatcher configuration: sh gradlew environmentDev
  4. Copying JCR content between AEM instances: sh gradlew instanceRcp -Pinstance.rcp.source=http://user:[email protected]:4502 -Pinstance.rcp.target=local-author -Pinstance.rcp.paths=[/content/example,/content/dam/example]

Tips & tricks

  • To run some task only for subproject, use project path as a prefix, for instance: sh gradlew :app:aem:ui.content:packageDeploy.
  • According to recommendations, Gradle daemon should be:
    • enabled on development environments,
    • disabled on continuous integration environments.
  • To see more descriptive errors or want to skip some tasks, see command line documentation.

Running tests

IntelliJ

Certain unit tests may depend on the results of running gradle tasks. One such example is the testing of OSGi Services using OSGi Mocks where in order to run a test, the SCR metadata must be available for a class. Running a test like this in IntelliJ results in errors because the IDE is not aware of the Bundle plugin.

This can be worked around by configuring IntelliJ to delegate test execution to Gradle. In order to set this up, go to Settings > Build, Execution, Deployment > Gradle > Runner and set your IDE to delegate IDE build/run actions to Gradle. Alternatively, you can use a dropdown menu to use a specific runner or to decide on a test-by-test basis.

Attaching debugger

  1. Execute build with options -Dorg.gradle.debug=true --no-daemon, it will suspend,
  2. Attach debugger on port 5005,
  3. Suspension will be released and build should stop at breakpoint.

Extending build

For defining new tasks directly in build see:

The easiest way to implement custom plugins and use them in project is a technique related with buildSrc/ directory. For more details please read documentation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].