Konfigurera en lokal AEM utvecklingsmiljö

Guide to setting up a local development for Adobe Experience Manager, AEM. Omfattar viktiga ämnen som rör lokal installation, Apache Maven, integrerade utvecklingsmiljöer samt felsökning/felsökning. Utveckling med Eclipse IDE, CRXDE Lite, Visual Studio Code och IntelliJ diskuteras.

Ökning

Att konfigurera en lokal utvecklingsmiljö är första steget i utvecklingen för Adobe Experience Manager eller AEM. Ta dig tid att konfigurera en kvalitetsutvecklingsmiljö för att öka produktiviteten och skriva bättre kod snabbare. Vi kan bryta ned en AEM lokal utvecklingsmiljö i fyra områden:

  • Lokala AEM
  • Apache Maven projekt
  • Integrerade utvecklingsmiljöer
  • Felsökning

Installera lokala AEM

När vi syftar på en lokal AEM talar vi om en kopia av Adobe Experience Manager som körs på en utvecklares personliga maskin. Utvecklingen av Alla AEM börja med att skriva och köra kod mot en lokal AEM.

Om du inte har använt AEM tidigare kan du installera två grundläggande körningslägen: Författare och Publish. Författaren runmode är den miljö som digitala marknadsförare använder för att skapa och hantera innehåll. När du oftast utvecklar kod distribuerar du kod till en Author-instans. På så sätt kan du skapa sidor och lägga till och konfigurera komponenter. AEM Sites är ett CMS för WYSIWYG-redigering och därför kan merparten av CSS och JavaScript testas mot en redigeringsinstans.

Det är också kritisk testkod mot en lokal Publish-instans. Instansen Publish är den AEM miljö som besökare på webbplatsen interagerar med. Även om Publish-instansen är samma teknikstack som Författaren -instansen finns det vissa viktiga skillnader när det gäller konfigurationer och behörigheter. Koden måste testas mot en lokal Publish-instans innan den befordras till miljöer på högre nivå.

Steg

  1. Kontrollera att Java™ är installerat.

    • Föredra [Java™ JDK 11](https://experience.adobe.com/#/downloads/content/software-distribution/en/general.html?1_group.propertyvalues.property=.%2Fjcr%3Acontent%2Fmetadata%2FDc%3AsoftwareType&1_group.propertyvalues.operation=equals&1_group.propertyvalues.0_values=software-type%3Atooling&orderby=%40jcr%3Acontent%2Fjcr%3AlastModified&order.sort=desc&layout=list&list p.offset=0&p.limit=14) för AEM 6.5+
    • Java™ JDK 8 för AEM versioner före AEM 6.5
  2. Hämta en kopia av AEM QuickStart Jar och en license.properties.

  3. Skapa en mappstruktur på datorn enligt följande:

~/aem-sdk
    /author
    /publish
  1. Byt namn på QuickStart JAR till aem-author-p4502.jar och placera den under katalogen /author. Lägg till filen license.properties under katalogen /author.

  2. Skapa en kopia av QuickStart JAR, byt namn på den till aem-publish-p4503.jar och placera den under katalogen /publish. Lägg till en kopia av filen license.properties under katalogen /publish.

~/aem-sdk
    /author
        + aem-author-p4502.jar
        + license.properties
    /publish
        + aem-publish-p4503.jar
        + license.properties
  1. Dubbelklicka på filen aem-author-p4502.jar för att installera instansen Author. Detta startar författarinstansen, som körs på port 4502 på den lokala datorn.

Dubbelklicka på filen aem-publish-p4503.jar för att installera Publish -instansen. Detta startar Publish-instansen som körs på port 4503 på den lokala datorn.

NOTE
Beroende på utvecklingsdatorns maskinvara kan det vara svårt att ha både en författare och en Publish-instans igång samtidigt. I sällsynta fall behöver du köra båda samtidigt på en lokal installation.

Använda kommandorad

Ett alternativ till att dubbelklicka på JAR-filen är att starta AEM från kommandoraden eller skapa ett skript (.bat eller .sh) beroende på den lokala operativsystemsvarianten. Nedan visas ett exempel på exempelkommandot:

$ java -Xmx2048M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=30303 -jar aem-author-p4502.jar -gui -r"author,localdev"

Här är -X JVM-alternativ och -D är ytterligare ramverksegenskaper. Mer information finns i Distribuera och underhålla en AEM och Fler alternativ finns i QuickStart-filen.

Installera Apache Maven

Apache Maven är ett verktyg för att hantera bygg- och distributionsproceduren för Java-baserade projekt. AEM är en Java-baserad plattform och Maven är standardsättet att hantera kod för ett AEM projekt. När vi säger AEM Maven Project eller bara ditt AEM Project syftar vi på ett Maven-projekt som innehåller all anpassad kod för din webbplats.

Alla AEM ska byggas av den senaste versionen av AEM Project Archetype: https://github.com/adobe/aem-project-archetype. AEM Project Archetype innehåller en startdel för ett AEM med exempelkod och innehåll. AEM Project Archetype innehåller även AEM WCM Core Components som konfigurerats för användning i ditt projekt.

CAUTION
När du startar ett nytt projekt är det bäst att använda den senaste versionen av typen. Kom ihåg att det finns flera versioner av typen och att inte alla versioner är kompatibla med tidigare versioner av AEM.

Steg

  1. Hämta Apache Maven
  2. Installera Apache Maven och kontrollera att installationen har lagts till på kommandoraden PATH.
    • macOS användare kan installera Maven med Homebrew
  3. Kontrollera att Maven har installerats genom att öppna en ny kommandoradsterminal och köra följande:
$ mvn --version
Apache Maven 3.3.9
Maven home: /Library/apache-maven-3.3.9
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
NOTE
Tidigare tillägg av adobe-public Maven-profil behövdes för att peka nexus.adobe.com för att hämta AEM artefakter. Alla AEM artefakter är nu tillgängliga via Maven Central och profilen adobe-public behövs inte.

Konfigurera en integrerad utvecklingsmiljö

En integrerad utvecklingsmiljö eller IDE är ett program som kombinerar en textredigerare, syntaxstöd och byggverktyg. Beroende på vilken typ av utveckling du håller på med kan en utvecklingsmiljö vara att föredra framför en annan. Oavsett vilken utvecklingsmiljö det gäller är det viktigt att du regelbundet kan push-kod till en lokal AEM för att kunna testa den. Det är viktigt att ibland pull-konfigurationer från en lokal AEM till ditt AEM projekt för att kunna finnas kvar i ett källkontrollshanteringssystem som Git.

Nedan visas några av de populäraste IDE:erna som används för AEM med motsvarande videofilmer som visar integrationen med en lokal AEM.

NOTE
WKND-projektet har uppdaterats så att det fungerar som standard på AEM as a Cloud Service. Den har uppdaterats så att den är bakåtkompatibel med 6.5/6.4. Om du använder AEM 6.5 eller 6.4 lägger du till profilen classic till eventuella Maven-kommandon.
$ mvn clean install -PautoInstallSinglePackage -Pclassic

Kontrollera classic på fliken Maven-profil när du använder en IDE.

Profilflik i Maven

IntelliJ Maven-profil

Eclipse IDE

Eclipse IDE är en av de populäraste IDE:erna för Java™-utveckling, till stor del eftersom den har öppen källkod och gratis! Adobe tillhandahåller ett plugin-program, AEM Developer Tools, för Eclipse som gör det enklare att utveckla med ett bra användargränssnitt att synkronisera kod med en lokal AEM. Den integrerade utvecklingsmiljön Eclipse rekommenderas för utvecklare som inte AEM till stor del på grund av det grafiska användargränssnittet i AEM Developer Tools.

Installation och installation

  1. Hämta och installera Eclipse IDE för Java™ EE Developers: https://www.eclipse.org
  2. Följ instruktionerna för att installera plugin-programmet AEM Developer Tools: https://experienceleague.adobe.com/docs/experience-manager-65/developing/devtools/aem-eclipse.html?lang=sv-SE
  • 00:30 - Importera Maven Project
  • 01:24 - Skapa och distribuera källkod med Maven
  • 04:33 - Skjut upp kodändringar med AEM Developer Tool
  • 10:55 - Dra in kodändringar med AEM Developer Tool
  • 13:12 - Använda de integrerade felsökningsverktygen i Eclipse

IntelliJ IDEA

IntelliJ IDEA är en kraftfull IDE för professionell Java™-utveckling. IntelliJ IDEA finns i två versioner, en kostnadsfri Community-utgåva och en kommersiell (betald) Ultimate-version. Den kostnadsfria Community-versionen av IntellIJ IDEA räcker för mer AEM utveckling, men Ultimate utökar sin funktionsuppsättning.

Installation and Setup

  1. Hämta och installera IntelliJ IDEA: https://www.jetbrains.com/idea/download
  2. Installera Repo (kommandoradsverktyg): https://github.com/Adobe-Marketing-Cloud/tools/tree/master/repo
  • 00:00 - Importera Maven Project
  • 05:47 - Skapa och distribuera källkod med Maven
  • 08:17 - Gör ändringar med Repo
  • 14:39 - Dra in ändringar med Repo
  • 17:25 - Använda de integrerade felsökningsverktygen i IntelliJ IDEA

Visual Studio Code

Visual Studio-kod har snabbt blivit ett favoritverktyg för gränssnittsutvecklare med utökat stöd för JavaScript, Intellisense och webbläsarfelsökning. Visual Studio Code är kostnadsfri med öppen källkod och många kraftfulla tillägg. Visual Studio Code kan konfigureras för integrering med AEM med hjälp av ett Adobe-verktyg, repo. Det finns också flera tillägg som stöds av communityn som kan installeras för integrering med AEM.

Visual Studio Code är ett bra val för gränssnittsutvecklare som primärt skriver CSS/LESS och JavaScript-kod för att skapa AEM klientbibliotek. Det här verktyget kanske inte är det bästa alternativet för nya AEM eftersom noddefinitioner (dialogrutor, komponenter) måste redigeras i rå XML. Det finns flera Java™-tillägg tillgängliga för Visual Studio Code, men om du primärt gör Java™-utveckling Eclipse IDE eller IntelliJ kan det vara att föredra.

Viktiga länkar

  • Hämta Visual Studio-kod
  • repo - FTP-liknande verktyg för JCR-innehåll
  • aemfed - Snabba upp ditt AEM arbetsflöde
  • AEM Synkronisera - Tillägg som stöds av communityn* för Visual Studio-kod
  • 00:30 - Importera Maven Project
  • 00:53 - Skapa och distribuera källkod med Maven
  • 04:03 - Skjut upp kodändringar med kommandoradsverktyget Repo
  • 08:29 - Dra in kodändringar med kommandoradsverktyget Repo
  • 10:40 - Skjut upp kodändringar med det inmatade verktyget
  • 14:24 - Felsökning, Återskapa klientbibliotek

CRXDE Lite

CRXDE Lite är en webbläsarbaserad vy av AEM. CRXDE Lite är inbäddad i AEM och gör att en utvecklare kan utföra standardutvecklingsuppgifter som att redigera filer, definiera komponenter, dialogrutor och mallar. CRXDE Lite är inte avsedd som en fullständig utvecklingsmiljö, men är effektivt som felsökningsverktyg. CRXDE Lite är användbart när du vill utöka eller helt enkelt förstå produktkod utanför kodbasen. CRXDE Lite ger en kraftfull vy över databasen och ett sätt att effektivt testa och hantera behörigheter.

CRXDE Lite ska användas med andra IDE:er för att testa och felsöka kod, men aldrig som det primära utvecklingsverktyget. Den har begränsat syntaxstöd, inga funktioner för automatisk komplettering och begränsad integrering med system för källkodshantering.

Felsökning

Hjälp! Min kod fungerar inte! Precis som med all utveckling finns det tillfällen (förmodligen många) där koden inte fungerar som förväntat. AEM är en kraftfull plattform, men med stor kraft … är mycket komplicerad. Nedan visas några viktiga startpunkter när du felsöker och spårar problem (men långt ifrån en fullständig lista över saker som kan gå fel):

Verifiera koddistribution

Ett bra första steg när du stöter på ett problem är att kontrollera att koden har distribuerats och installerats korrekt till AEM.

  1. KontrolleraPackage Manager för att kontrollera att kodpaketet har överförts och installerats: http://localhost:4502/crx/packmgr/index.jsp. Kontrollera tidsstämpeln för att bekräfta att paketet har installerats nyligen.
  2. Om du utför inkrementella filuppdateringar med ett verktyg som Repo eller AEM Developer Tools, kontrollerarCRXDE Lite att filen har skickats till den lokala AEM och att filinnehållet har uppdaterats: http://localhost:4502/crx/de/index.jsp
  3. Kontrollera att paketet har överförts om det uppstår problem med Java™-kod i ett OSGi-paket. Öppna Adobe Experience Manager Web Console: http://localhost:4502/system/console/bundles och sök efter ditt paket. Kontrollera att paketet har statusen Active. Nedan finns mer information om felsökning av ett paket i läget Installed.

Kontrollera loggarna

AEM är en chattingplattform och loggar användbar information i error.log. error.log finns där AEM har installerats: < aem-installation-folder>/crx-quickstart/logs/error.log.

En användbar teknik för att spåra problem är att lägga till loggsatser i Java™-koden:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...

public class MyClass {
    private final Logger log = LoggerFactory.getLogger(getClass());

    ...

    String myVariable = "My Variable";

    log.debug("Debug statement of myVariable {}", myVariable);

    log.info("Info statement of myVariable {}", myVariable);
}

Som standard är error.log konfigurerad att logga INFO-satser. Om du vill ändra loggnivån kan du göra det genom att gå till Log Support: http://localhost:4502/system/console/slinglog. Du kan också upptäcka att error.log är för kattlig. Du kan använda Log Support för att konfigurera loggsatser för endast ett angivet Java™-paket. Detta är en god vana för projekt för att enkelt kunna skilja skräddarsydda kodproblem från OTB-AEM.

Loggningskonfiguration i AEM

Paketet är i ett installerat läge bundle-active

Alla paket (exklusive fragment) ska vara i läget Active. Om du ser ditt kodpaket i läget Installed finns det ett problem som måste lösas. Det här är oftast ett beroendeproblem:

Paketfel i AEM

På skärmbilden ovan är WKND Core bundle ett Installed-läge. Detta beror på att paketet förväntar sig en annan version av com.adobe.cq.wcm.core.components.models än den som är tillgänglig på AEM.

Ett användbart verktyg som kan användas är Dependency Finder: http://localhost:4502/system/console/depfinder. Lägg till Java™-paketnamnet för att kontrollera vilken version som är tillgänglig på AEM:

Kärnkomponenter

Som fortsättning på ovanstående exempel ser vi att den version som är installerad på AEM är 12.2 vs 12.6 som paketet förväntades. Därifrån kan du arbeta baklänges och se om beroendena för Maven AEM matchar beroendena för Maven i det AEM projektet. I exemplet ovan är Core Components v2.2.0 installerat på AEM men kodpaketet skapades med ett beroende av v2.2.2, vilket är orsaken till beroendeproblemet.

Verifiera registrering av försäljningsmodeller osgi-component-sling-models

AEM måste backas upp av en Sling Model för att inkapsla eventuell affärslogik och säkerställa att HTML-återgivningsskriptet förblir rent. Om du får problem där Sling Model inte kan hittas kan det vara bra att kontrollera Sling Models från konsolen: http://localhost:4502/system/console/status-slingmodels. Detta anger om din Sling-modell har registrerats och vilken resurstyp (komponentsökvägen) den är kopplad till.

Sling Model-status

Visar registreringen av en Sling Model, BylineImpl som är kopplad till en komponentresurstyp av wknd/components/content/byline.

CSS- eller JavaScript-problem

För de flesta CSS- och JavaScript-problem är det mest effektiva sättet att felsöka webbläsarens utvecklingsverktyg. Om du vill begränsa problemet när du utvecklar mot en AEM författarinstans kan det vara bra att visa sidan"som publicerad".

CSS- eller JS-problem

Öppna menyn Page Properties och klicka på View as Published. Sidan öppnas utan AEM Editor och med en frågeparameter inställd på wcmmode=disabled. Detta inaktiverar effektivt gränssnittet för AEM och gör det mycket enklare att felsöka/felsöka frontend-problem.

Ett annat vanligt fel uppstod när front end-kod utvecklades. CSS/JS läses in. Som ett första steg måste du kontrollera att webbläsarhistoriken har rensats och vid behov starta en webbläsare som inte känner av eller en ny session.

Felsöka klientbibliotek

Med de olika metoderna för kategorier och inbäddning för att inkludera flera klientbibliotek kan det vara besvärligt att felsöka. AEM visar flera verktyg som kan hjälpa dig med detta. Ett av de viktigaste verktygen är Rebuild Client Libraries som tvingar AEM att kompilera om alla LESS-filer och generera CSS.

  • Dumpa bibliotek - Visar alla klientbibliotek som är registrerade i AEM. <host>/libs/granite/ui/content/dumplibs.html
  • Testa utdata - gör att en användare kan se förväntade HTML-utdata för clientlib includes baserat på kategori. <host>/libs/granite/ui/content/dumplibs.test.html
  • Verifiering av biblioteksberoenden - markerar beroenden eller inbäddade kategorier som inte kan hittas. <host>/libs/granite/ui/content/dumplibs.validate.html
  • Återskapa klientbibliotek - gör att en användare kan tvinga AEM att återskapa alla klientbibliotek eller ogiltigförklara cachen för klientbibliotek. Det här verktyget är effektivt när du utvecklar med LESS eftersom det kan tvinga AEM att kompilera om den genererade CSS-koden. I allmänhet är det effektivare att validera cacheminnen och sedan utföra en siduppdatering jämfört med att återskapa alla bibliotek. <host>/libs/granite/ui/content/dumplibs.rebuild.html

Felsöka Clientlibs

NOTE
Om du hela tiden måste göra cacheminnet ogiltigt med verktyget Rebuild Client Libraries kan det vara värt att göra om alla klientbibliotek en gång. Detta kan ta ca 15 minuter, men eliminerar vanligtvis eventuella problem med cachelagring i framtiden.
recommendation-more-help
c92bdb17-1e49-4e76-bcdd-89e4f85f45e6