In diesem Tutorial wird die Erstellung eines Maven-Multi-Module-Projekts beschrieben, um den Code und die Konfigurationen für eine Adobe Experience Manager-Site zu verwalten.
Überprüfen Sie die erforderlichen Tools und Anweisungen zum Einrichten eines lokale Entwicklungsumgebung. Stellen Sie sicher, dass eine neue Instanz von Adobe Experience Manager lokal verfügbar ist und keine zusätzlichen Beispiel-/Demopakete installiert wurden (außer den erforderlichen Service Packs).
In diesem Kapitel erstellen Sie ein neues Adobe Experience Manager-Projekt mit der AEM Projektarchetyp. Ihr AEM-Projekt enthält vollständigen Code, Inhalt und Konfigurationen, die für eine Sites-Implementierung verwendet werden. Das in diesem Kapitel erstellte Projekt dient als Grundlage für die Implementierung der WKND-Site und wird in künftigen Kapiteln verwendet.
Was ist ein Maven-Projekt? - Apache Maven ist ein Software-Management-Tool zum Erstellen von Projekten. Alle Adobe Experience Manager -Implementierungen verwenden Maven-Projekte zum Erstellen, Verwalten und Bereitstellen von benutzerdefiniertem Code zusätzlich zu AEM.
Was ist ein Maven-Archetyp? - A Maven-Archetyp ist eine Vorlage oder ein Muster zum Generieren neuer Projekte. Der AEM Projektarchetyp hilft, ein neues Projekt mit einem benutzerdefinierten Namespace zu generieren und eine Projektstruktur einzuschließen, die Best Practices folgt und die Projektentwicklung erheblich beschleunigt.
Es gibt mehrere Optionen zum Erstellen eines Maven-Multi-Modul-Projekts für AEM. In diesem Tutorial wird die Maven AEM Projektarchetyp 35. Cloud Manager auch stellt einen UI-Assistenten bereit , um die Erstellung eines AEM Anwendungsprojekts zu starten. Das zugrunde liegende Projekt, das von der Cloud Manager-Benutzeroberfläche generiert wurde, weist dieselbe Struktur auf wie die direkte Verwendung des Archetyps.
Dieses Tutorial verwendet Version 35 des Archetyps. Es empfiehlt sich immer, die latest Version des Archetyps, um ein neues Projekt zu generieren.
Die nächsten Schritte werden mit einem UNIX®-basierten Befehlszeilenterminal durchgeführt, sollten aber bei Verwendung eines Windows-Terminals ähnlich sein.
Öffnen Sie ein Befehlszeilen-Terminal. Stellen Sie sicher, dass Maven installiert ist:
$ mvn --version
Apache Maven 3.6.2
Maven home: /Library/apache-maven-3.6.2
Java version: 11.0.4, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.0.4.jdk/Contents/Home
Navigieren Sie zu einem Ordner, in dem Sie das AEM Projekt generieren möchten. Dies kann ein beliebiger Ordner sein, in dem Sie den Quellcode Ihres Projekts verwalten möchten. Beispiel: ein Verzeichnis mit dem Namen code
unter dem Basisverzeichnis des Benutzers:
$ cd ~/code
Fügen Sie Folgendes in die Befehlszeile ein, um Projekt im Batch-Modus generieren:
mvn -B org.apache.maven.plugins:maven-archetype-plugin:3.2.1:generate \
-D archetypeGroupId=com.adobe.aem \
-D archetypeArtifactId=aem-project-archetype \
-D archetypeVersion=39 \
-D appTitle="WKND Sites Project" \
-D appId="wknd" \
-D groupId="com.adobe.aem.guides" \
-D artifactId="aem-guides-wknd" \
-D package="com.adobe.aem.guides.wknd" \
-D version="0.0.1-SNAPSHOT" \
-D aemVersion="cloud"
Ersetzen Sie AEM 6.5.14 oder höher aemVersion="cloud"
mit aemVersion="6.5.14"
.
Eine vollständige Liste der verfügbaren Eigenschaften zum Konfigurieren eines Projekts finden Sie hier ..
Die folgende Ordner- und Dateistruktur wird vom Maven-Archetyp in Ihrem lokalen Dateisystem generiert:
~/code/
|--- aem-guides-wknd/
|--- all/
|--- core/
|--- ui.apps/
|--- ui.apps.structure/
|--- ui.config/
|--- ui.content/
|--- ui.frontend/
|--- ui.tests /
|--- it.tests/
|--- dispatcher/
|--- pom.xml
|--- README.md
|--- .gitignore
Erstellen Sie den Projektcode und stellen Sie ihn auf einer lokalen Instanz von AEM bereit.
Stellen Sie sicher, dass eine Autoreninstanz AEM lokal am Port ausgeführt wird. 4502.
Navigieren Sie in der Befehlszeile zum aem-guides-wknd
Projektverzeichnis.
$ cd aem-guides-wknd
Führen Sie den folgenden Befehl aus, um das gesamte Projekt zu erstellen und AEM bereitzustellen:
$ mvn clean install -PautoInstallSinglePackage
Der Build dauert etwa eine Minute und sollte mit der folgenden Meldung enden:
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for WKND Sites Project 0.0.1-SNAPSHOT:
[INFO]
[INFO] WKND Sites Project ................................. SUCCESS [ 0.113 s]
[INFO] WKND Sites Project - Core .......................... SUCCESS [ 3.136 s]
[INFO] WKND Sites Project - UI Frontend ................... SUCCESS [ 4.461 s]
[INFO] WKND Sites Project - Repository Structure Package .. SUCCESS [ 0.359 s]
[INFO] WKND Sites Project - UI apps ....................... SUCCESS [ 1.732 s]
[INFO] WKND Sites Project - UI content .................... SUCCESS [ 0.956 s]
[INFO] WKND Sites Project - UI config ..................... SUCCESS [ 0.064 s]
[INFO] WKND Sites Project - All ........................... SUCCESS [ 8.229 s]
[INFO] WKND Sites Project - Integration Tests ............. SUCCESS [ 3.329 s]
[INFO] WKND Sites Project - Dispatcher .................... SUCCESS [ 0.027 s]
[INFO] WKND Sites Project - UI Tests ...................... SUCCESS [ 0.032 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23.189 s
[INFO] Finished at: 2023-01-10T11:12:23-05:00
[INFO] ------------------------------------------------------------------------
Das Maven-Profil autoInstallSinglePackage
kompiliert die einzelnen Module des Projekts und stellt ein einzelnes Paket in der AEM-Instanz bereit. Standardmäßig wird dieses Paket in einer AEM-Instanz bereitgestellt, die lokal am Port ausgeführt wird 4502 und mit den Anmeldeinformationen von admin:admin
.
Navigieren Sie in Ihrer lokalen AEM-Instanz zu Package Manager : http://localhost:4502/crx/packmgr/index.jsp. Sie sollten Pakete für aem-guides-wknd.ui.apps
, aem-guides-wknd.ui.config
, aem-guides-wknd.ui.content
und aem-guides-wknd.all
.
Navigieren Sie zur Sites-Konsole: http://localhost:4502/sites.html/content. Die WKND-Site ist eine der Sites. Es enthält eine Site-Struktur mit einer US- und Sprach-Master-Hierarchie. Diese Site-Hierarchie basiert auf den Werten für language_country
und isSingleCountryWebsite
beim Generieren des Projekts mithilfe des Archetyps.
Öffnen Sie die USA >
englisch Seite durch Auswahl der Seite und Klicken auf Bearbeiten in der Menüleiste:
Starterinhalt wurde bereits erstellt und es stehen mehrere Komponenten zur Verfügung, die einer Seite hinzugefügt werden können. Experimentieren Sie mit diesen Komponenten, um eine Vorstellung von der Funktionalität zu erhalten. Im nächsten Kapitel lernen Sie die Grundlagen einer Komponente kennen.
Vom Archetyp generierter Beispielinhalt
Das generierte AEM Projekt besteht aus einzelnen Maven-Modulen mit jeweils einer anderen Rolle. Dieses Tutorial und die meisten Entwicklungsthemen konzentrieren sich auf diese Module:
core - Java-Code, in erster Linie Back-End-Entwickler.
ui.frontend - Enthält Quellcode für CSS, JavaScript, Sass, TypeScript, hauptsächlich für Frontend-Entwickler.
ui.apps - Enthält Komponenten- und Dialogfelddefinitionen, bettet kompilierte CSS- und JavaScript-Dateien als Client-Bibliotheken ein.
ui.content - enthält Strukturinhalte und Konfigurationen wie bearbeitbare Vorlagen, Metadatenschemata (/content,%20/conf?lang=de).
all - Dies ist ein leeres Maven-Modul, das die oben genannten Module zu einem einzigen Paket kombiniert, das in einer AEM Umgebung bereitgestellt werden kann.
Siehe Dokumentation zum AEM Projektarchetyp Weitere Informationen finden Sie unter all Maven-Module.
AEM Kernkomponenten sind eine Reihe standardisierter WCM-Komponenten (Web Content Management) für AEM. Diese Komponenten bieten einen Grundsatz an Funktionen und sind für einzelne Projekte gestaltet, angepasst und erweitert.
AEM as a Cloud Service Umgebung enthält die neueste Version von AEM Kernkomponenten. Daher erledigen Projekte, die AEM as a Cloud Service Projekte erstellt wurden not enthalten eine Einbettung AEM Kernkomponenten.
Für AEM 6.5/6.4 generierten Projekte wird der Archetyp automatisch eingebettet AEM Kernkomponenten im Projekt. Es empfiehlt sich, AEM 6.5/6.4 AEM Kernkomponenten einzubetten, um sicherzustellen, dass die neueste Version mit Ihrem Projekt bereitgestellt wird. Weitere Informationen zur Verwendung von Kernkomponenten im Projekt enthalten sind, finden Sie hier ..
Es empfiehlt sich immer, eine Form der Quell-Code-Verwaltung in Ihrer Anwendung zu verwenden. In diesem Tutorial werden Git und GitHub verwendet. Es gibt mehrere Dateien, die von Maven und/oder der IDE Ihrer Wahl generiert werden und die vom SCM ignoriert werden sollten.
Maven erstellt bei jeder Erstellung und Installation des Code-Pakets einen Zielordner. Der Zielordner und die Inhalte sollten von SCM ausgeschlossen werden.
Unter dem ui.apps
-Modul feststellen, dass viele .content.xml
-Dateien erstellt werden. Diese XML-Dateien ordnen die Knotentypen und Eigenschaften des im JCR installierten Inhalts zu. Diese Dateien sind wichtig und cannot ignoriert werden.
Der AEM Projektarchetyp generiert ein Beispiel .gitignore
-Datei, die als Ausgangspunkt verwendet werden kann, für den Dateien sicher ignoriert werden können. Die Datei wird generiert unter <src>/aem-guides-wknd/.gitignore
.
Herzlichen Glückwunsch, Sie haben Ihr erstes AEM Projekt erstellt!
Machen Sie sich mit der zugrunde liegenden Technologie einer Adobe Experience Manager (AEM) Sites-Komponente durch eine einfache HelloWorld
Beispiel mit der Komponentengrundlagen Tutorial.
Während der Entwicklung können Sie nur mit einem der Module arbeiten und vermeiden, das gesamte Projekt zu erstellen, um Zeit zu sparen. Sie können auch eine direkte Bereitstellung auf einer AEM-Veröffentlichungsinstanz oder möglicherweise auf einer Instanz von AEM durchführen, die nicht auf Port 4502 ausgeführt wird.
Im Folgenden werden einige zusätzliche Maven-Profile und -Befehle vorgestellt, die Sie für mehr Flexibilität bei der Entwicklung verwenden können.
Die core enthält den gesamten Java™-Code, der mit dem Projekt verknüpft ist. Der Build von core -Modul stellt ein OSGi-Bundle für AEM bereit. So erstellen Sie nur dieses Modul:
Navigieren Sie zur core
Ordner (unter aem-guides-wknd
):
$ cd core/
Führen Sie den folgenden Befehl aus:
$ mvn clean install -PautoInstallBundle
...
[INFO] --- sling-maven-plugin:2.4.0:install (install-bundle) @ aem-guides-wknd.core ---
[INFO] Installing Bundle aem-guides-wknd.core(~/code/aem-guides-wknd/core/target/aem-guides-wknd.core-0.0.1-SNAPSHOT.jar) to http://localhost:4502/system/console via WebConsole
[INFO] Bundle installed
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.558 s
Navigieren Sie zu http://localhost:4502/system/console/bundles. Dies ist die OSGi-Web-Konsole und enthält Informationen zu allen auf der AEM-Instanz installierten Bundles.
Umschalten zwischen ID Sortierungsspalte, sollte das WKND-Bundle installiert und aktiv sein.
Sie können die "physische"Position der JAR-Datei in CRXDE-Lite:
Die ui.apps Das Maven-Modul enthält den gesamten Rendercode, der für die unten stehende Site benötigt wird. /apps
. Dazu gehört auch CSS/JS, das in einem AEM namens clientlibs. Dazu gehören auch HTL Skripte zum Rendern von dynamischem HTML. Sie können sich die ui.apps -Modul als Zuordnung zur Struktur im JCR, jedoch in einem Format, das in einem Dateisystem gespeichert und an die Quell-Code-Verwaltung übertragen werden kann. Die ui.apps -Modul enthält nur Code.
So erstellen Sie nur dieses Modul:
In der Befehlszeile. Navigieren Sie zur ui.apps
Ordner (unter aem-guides-wknd
):
$ cd ../ui.apps
Führen Sie den folgenden Befehl aus:
$ mvn clean install -PautoInstallPackage
...
Package installed in 70ms.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.987 s
[INFO] Finished at: 2023-01-10T11:35:28-05:00
[INFO] ------------------------------------------------------------------------
Navigieren Sie zu http://localhost:4502/crx/packmgr/index.jsp. Sie sollten die ui.apps
-Paket als erstes installiertes Paket und sollte einen aktuelleren Zeitstempel als bei allen anderen Paketen haben.
Kehren Sie zur Befehlszeile zurück und führen Sie den folgenden Befehl aus (innerhalb der ui.apps
Ordner):
$ mvn -PautoInstallPackagePublish clean install
...
[INFO] --- content-package-maven-plugin:1.0.2:install (install-package-publish) @ aem-guides-wknd.ui.apps ---
[INFO] Installing aem-guides-wknd.ui.apps (/Users/sachinmali/Desktop/code/wknd-tutorial/aem-guides-wknd/ui.apps/target/aem-guides-wknd.ui.apps-0.0.1-SNAPSHOT.zip) to http://localhost:4503/crx/packmgr/service.jsp
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.812 s
[INFO] Finished at: 2023-01-10T11:37:28-05:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.day.jcr.vault:content-package-maven-plugin:1.0.2:install (install-package-publish) on project aem-guides-wknd.ui.apps: Connection refused (Connection refused) -> [Help 1]
Das Profil autoInstallPackagePublish
ist dazu bestimmt, das Paket in einer Veröffentlichungsumgebung bereitzustellen, die auf dem Port ausgeführt wird. 4503. Der obige Fehler wird erwartet, wenn eine AEM Instanz, die auf http://localhost:4503 ausgeführt wird, nicht gefunden werden kann.
Führen Sie abschließend den folgenden Befehl aus, um die ui.apps
Package on Port 4504:
$ mvn -PautoInstallPackage clean install -Daem.port=4504
...
[INFO] --- content-package-maven-plugin:1.0.2:install (install-package) @ aem-guides-wknd.ui.apps ---
[INFO] Installing aem-guides-wknd.ui.apps (/Users/dgordon/code/aem-guides-wknd/ui.apps/target/aem-guides-wknd.ui.apps-0.0.1-SNAPSHOT.zip) to http://localhost:4504/crx/packmgr/service.jsp
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] I/O exception (java.net.ConnectException) caught when processing request: Connection refused (Connection refused)
[INFO] Retrying request
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] --------------------------------------------------------------------
Auch hier wird ein Build-Fehler erwartet, wenn keine AEM Instanz auf dem Port ausgeführt wird 4504 ist verfügbar. Der Parameter aem.port
wird in der POM-Datei unter aem-guides-wknd/pom.xml
.
Die ui.content -Modul auf die gleiche Weise strukturiert wie das ui.apps -Modul. Der einzige Unterschied besteht darin, dass die ui.content enthält das so genannte veränderlich Inhalt. Veränderlich Inhalt bezieht sich im Wesentlichen auf Nicht-Code-Konfigurationen wie Vorlagen, Richtlinien oder Ordnerstrukturen, die in der Quell-Code-Verwaltung gespeichert sind but kann direkt in einer AEM-Instanz geändert werden. Dies wird im Kapitel zu Seiten und Vorlagen ausführlicher untersucht.
Dieselben Maven-Befehle, die zum Erstellen der ui.apps -Modul zum Erstellen der ui.content -Modul. Sie können die oben genannten Schritte innerhalb der ui.content Ordner.
Wenn beim Generieren des Projekts mit dem AEM Projektarchetyp Probleme auftreten, sehen Sie sich die Liste der bekannte Probleme und Liste der offenen issues.
Herzlichen Glückwunsch, dass Sie durch das Bonusmaterial gehen.
Machen Sie sich mit der zugrunde liegenden Technologie einer Adobe Experience Manager (AEM) Sites-Komponente durch eine einfache HelloWorld
Beispiel mit der Komponentengrundlagen Tutorial.