Der AEM-Projektarchetyp erstellt ein Adobe Experience Manager-Projekt mit minimalen Best Practices als Ausgangspunkt für Ihre eigenen AEM-Projekte. Die Eigenschaften, die bei Verwendung dieses Archetyps angegeben werden müssen, ermöglichen es Ihnen, die Namen für alle Teile dieses Projekts anzugeben und bestimmte optionale Funktionen zu steuern.
Mithilfe des AEM-Projektarchetyps können Sie auf dem Weg zum Aufbau eines AEM-Projekts mit bewährten Verfahren und nur wenigen Tastenanschlägen beginnen. Durch Verwendung des Archetyps werden alle Teile bereits vorhanden sein, sodass das resultierende Projekt minimal ist, es jedoch bereits alle Schlüsselfunktionen von AEM implementiert, sodass Sie nur auf dem Aufbau aufbauen und erweitern müssen.
Natürlich gibt es viele Elemente, die in ein erfolgreiches AEM-Projekt eingehen, aber die Verwendung des AEM-Projektarchetyps ist eine solide Grundlage und wird dringend für jedes AEM-Projekt empfohlen.
Der Projektarchetyp erleichtert die ersten Schritte der Entwicklung in AEM. Sie haben dabei mehrere Möglichkeiten.
Der AEM-Archetyp besteht aus Modulen:
/apps
- und /etc
-Teile des Projekts, d. h. JS- und CSS-clientlibs, Komponenten und Vorlagen.Die in Maven dargestellten Module des AEM-Archetyps werden als Inhaltspakete bereitgestellt, die das Programm, den Inhalt und die erforderlichen OSGi-Pakete darstellen.
Um den Archetyp zu verwenden, müssen Sie zunächst ein Projekt erstellen, das die Module in einer lokalen Dateistruktur wie zuvor beschrieben generiert. Im Rahmen der Projekterstellung können mehrere Eigenschaften für Ihr Projekt definiert werden, z. B. Projektname, Version usw.
Beim Erstellen des Projekts mit Maven werden die Artefakte (Pakete und OSGi-Pakete) erstellt, die in AEM bereitgestellt werden können. Zusätzliche Maven-Befehle und -Profile können verwendet werden, um die Projektartefakte auf einer AEM-Instanz bereitzustellen.
Für den Einstieg können Sie die AEM Eclipse-Erweiterung verwenden und dem Assistenten für neue Projekte folgen. Wählen Sie dann AEM Sample Multi-Module Project, um eine veröffentlichte Version des Archetyps zu verwenden.
Natürlich können Sie auch direkt Maven aufrufen.
mvn -B archetype:generate \
-D archetypeGroupId=com.adobe.aem \
-D archetypeArtifactId=aem-project-archetype \
-D archetypeVersion=XX \
-D aemVersion=cloud \
-D appTitle="My Site" \
-D appId="mysite" \
-D groupId="com.mysite" \
-D frontendModule=general \
-D includeExamples=n
XX
auf die Versionsnummer des neuesten AEM-Projektarchetyps fest.aemVersion=cloud
für AEM as a Cloud Service fest.aemVersion=6.5.0
für Adobe Managed Services oder On-Premise fest.appTitle="My Site"
an, um den Titel der Website und die Komponentengruppen festzulegen.appId="mysite"
an, um die Maven-Artefakt-ID (artifactId), die Namen der Komponenten-, Konfigurations- und Inhaltsordner sowie die Namen der Client-Bibliotheken festzulegen.groupId="com.mysite"
an, um die Maven-Gruppen-ID (groupId) und das Java-Quellpaket festzulegen.Es empfiehlt sich, das adobe-public
Profil Ihrer Maven- settings.xml
Datei hinzuzufügen, um repo.adobe.com automatisch zum Maven-Build-Prozess hinzuzufügen.
Ein Beispiel für POM finden Sie hier.
Die folgenden Eigenschaften sind beim Erstellen eines Projekts mit dem Archetyp verfügbar.
Name | Standard | Beschreibung |
---|---|---|
appTitle |
Der Titel der App; wird für den Titel der Website und die Komponentengruppen verwendet (z. B. "My Site" ). |
|
appId |
Technischer Name; wird für Komponenten-, Konfigurations- und Inhaltsordnernamen sowie die Namen der Client-Bibliotheken verwendet (z. B. "mysite" ). |
|
artifactId |
${appId} |
Maven-Basisartefakt-ID (z. B. "mysite" ). |
groupId |
Maven-Basisgruppen-ID (z. B. "com.mysite" ). |
|
package |
${groupId} |
Java-Quellpaket (z. B. "com.mysite" ). |
version |
1.0-SNAPSHOT |
Projektversion (z. B. 1.0-SNAPSHOT ). |
aemVersion |
cloud |
Ziel-AEM-Version (kann cloud für AEM as a Cloud Service sein; oder 6.5.0 oder 6.4.4 für Adobe Managed Services oder On-Premise). |
sdkVersion |
latest |
Wenn aemVersion=cloud , dann kann eine SDK-Version angegeben werden (z. B. 2020.02.2265.20200217T222518Z-200130 ). |
includeDispatcherConfig |
y |
Enthält eine Dispatcher-Konfiguration für Cloud oder für AMS/On-Premise, je nach dem Wert von aemVersion (kann y oder n sein). |
frontendModule |
general |
Enthält ein WebPack-Frontend-Build-Modul, das die Client-Bibliotheken generiert (kann general oder none für reguläre Websites sein; kann angular oder react für eine Single Page App sein, die den SPA-Editor implementiert). |
language |
en |
Sprachcode (ISO 639-1) zur Erstellung der Inhaltsstruktur (z. B. aus en , deu ). |
country |
us |
Ländercode (ISO 3166-1) zur Erstellung der Inhaltsstruktur (z. B. aus US ). |
singleCountry |
y |
Enthält eine Inhaltsstruktur für den Sprach-Master (kann y oder n sein). |
includeExamples |
n |
Enthält eine Beispiel-Website für die Komponentenbibliothek (kann y oder n sein). |
includeErrorHandler |
n |
Enthält eine benutzerdefinierte 404-Antwortseite, die für die gesamte Instanz global ist (kann y oder n sein). |
includeCommerce |
n |
Enthält CIF-Kernkomponenten-Abhängigkeiten und generiert entsprechende Artefakte. |
commerceEndpoint |
Nur für CIF erforderlich. Optionaler Endpunkt des zu verwendenden GraphQL-Service (z. B. https://hostname.com/grapql ). |
|
datalayer |
y |
Aktivieren Sie die Integration mit der Adobe Client-Datenschicht. |
amp |
n |
Aktivieren Sie AMP-Unterstützung für erstellte Projektvorlagen. |
enableDynamicMedia |
n |
Aktiviert die Foundation-Komponenten von Dynamic Media in den Einstellungen der Projektrichtlinien und aktiviert Dynamic Media-Funktionen in der Richtlinie der Kernbildkomponente. |
enableSSR |
n |
Option zum Aktivieren von SSR für das Frontend-Projekt |
precompiledScripts |
n |
Option zum Vorkompilieren der Server-seitigen Skripte von ui.apps und Anfügen dieser Skripte an den Build als sekundäres Paket-Artefakt im ui.apps -Projekt. aemVersion sollte auf cloud gesetzt werden. |
Wenn der Archetyp zum ersten Mal im interaktiven Modus ausgeführt wird, können Eigenschaften mit Standardwerten nicht geändert werden (weitere Informationen finden Sie unter ARCHETYPE-308 ). Der Wert kann geändert werden, wenn die Eigenschaftsbestätigung am Ende verweigert und der Fragebogen wiederholt wird oder indem der Parameter in der Befehlszeile (z. -DoptionIncludeExamples=n
).
Bei Ausführung unter Windows und Generierung der Dispatcher-Konfiguration sollte die Ausführung in einer Eingabeaufforderung mit erhöhten Rechten oder im Windows-Subsystem für Linux erfolgen (siehe Problem 329).
Das generierte Maven-Projekt unterstützt bei der Ausführung verschiedene Bereitstellungsprofile mvn install
.
Profil-ID | Beschreibung |
---|---|
autoInstallBundle |
Installiert das Kernpaket mit dem maven-sling-plugin für die Felix-Konsole |
autoInstallPackage |
Installiert das Inhaltspaket ui.content und ui.apps mit dem content-package-maven-plugin im Package Manager für die Standard-Autoreninstanz auf localhost, Port 4502. Hostname und Port können mit den benutzerdefinierten Eigenschaften aem.host und aem.port geändert werden. |
autoInstallPackagePublish |
Installiert das Inhaltspaket ui.content und ui.apps mit dem content-package-maven-plugin im Package Manager für die Standard-Veröffentlichungsinstanz auf localhost, Port 4503. Hostname und Port können mit den benutzerdefinierten Eigenschaften aem.host und aem.port geändert werden. |
autoInstallSinglePackage |
Installiert das Inhaltspaket all mit dem content-package-maven-plugin im Package Manager für die Standard-Autoreninstanz auf localhost, Port 4502. Hostname und Port können mit den benutzerdefinierten Eigenschaften aem.host und aem.port geändert werden. |
autoInstallSinglePackagePublish |
Installiert das Inhaltspaket all mit dem content-package-maven-plugin im Package Manager für die Standard-Veröffentlichungsinstanz auf localhost, Port 4503. Hostname und Port können mit den benutzerdefinierten Eigenschaften aem.host und aem.port geändert werden. |
integrationTests |
Führt die bereitgestellten Integrationstests auf der AEM-Instanz aus (nur für die verify -Phase) |
precompiledScripts |
Wurde automatisch definiert, als das Projekt erzeugt wurde, wobei die Eigenschaft precompiledScripts auf y gesetzt wurde. Das Profil ist standardmäßig aktiv und erzeugt ein OSGi-Paket innerhalb von ui.apps mit den vorkompilierten Skripten, die im all -Inhaltspaket enthalten sind. Das Profil kann mit -DskipScriptPrecompilation=true deaktiviert werden. |
Um alle im Projektstammordner ausgeführten Module zu erstellen, verwenden Sie den folgenden Maven-Befehl.
mvn clean install
Wenn Sie über eine ausgeführte AEM-Instanz verfügen, können Sie das gesamte Projekt erstellen und verpacken und mit dem folgenden Maven-Befehl in AEM bereitstellen.
mvn clean install -PautoInstallPackage
Führen Sie zum Bereitstellen auf einer Veröffentlichungsinstanz diesen Befehl aus.
mvn clean install -PautoInstallPackagePublish
Sie können diesen Befehl auch ausführen, um eine Bereitstellung in einer Veröffentlichungsinstanz durchzuführen.
mvn clean install -PautoInstallPackage -Daem.port=4503
Sie können auch nur das Bundle für den Autor bereitstellen, indem Sie diesen Befehl ausführen.
mvn clean install -PautoInstallBundle
Die pom.xml
am Stamm des Projekts (<src-directory>/<project>/pom.xml
) wird als übergeordnete POM bezeichnet und bestimmt die Struktur des Projekts sowie Abhängigkeiten und bestimmte globale Eigenschaften des Projekts.
Im <properties>
Abschnitt des übergeordneten POM werden verschiedene globale Eigenschaften definiert, die für die Bereitstellung Ihres Projekts auf einer AEM-Instanz wichtig sind, z. B. Benutzername/Kennwort, Hostname/Anschluss usw.
Diese Eigenschaften sind für die Bereitstellung auf einer lokalen AEM-Instanz eingerichtet, da dies der häufigste Build ist, den Entwickler ausführen. Beachten Sie, dass Eigenschaften für eine Autoreninstanz sowie für eine Veröffentlichungsinstanz bereitgestellt werden müssen. An dieser Stelle werden die Anmeldeinformationen auch für die Authentifizierung mit der AEM-Instanz festgelegt. Es werden die standardmäßigen admin:admin-Anmeldeinformationen verwendet.
Diese Eigenschaften werden so eingerichtet, dass sie bei der Bereitstellung in Umgebungen mit höherer Ebene überschrieben werden können. Auf diese Weise müssen sich die POM-Dateien nicht ändern, aber Variablen wie aem.host
sling.password
und können über Befehlszeilenargumente überschrieben werden:
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd
Der <modules>
Abschnitt des übergeordneten POM definiert die Module, die das Projekt erstellen wird. Standardmäßig erstellt das Projekt die zuvor definierten Standardmodule: core, ui.apps, ui.content, ui.tests und it.launcher. Im Laufe der Entwicklung eines Projekts können immer mehr Module hinzugefügt werden.
Im <dependencyManagement>
Abschnitt des übergeordneten POM werden alle Abhängigkeiten und Versionen der im Projekt verwendeten APIs definiert. Versionen sollten im übergeordneten POM verwaltet werden. Untermodule wie core und ui.apps sollten keine Versionsinformationen enthalten.
Eine der wichtigsten Abhängigkeiten ist die AEM Java-API-JAR. Dies umfasst alle AEM-APIs mit nur einem einzigen Abhängigkeitseintrag für die Version von AEM.
Als Best Practice sollten Sie die Version uber-jar aktualisieren, um sie an die Zielversion von AEM anzupassen. Wenn Sie beispielsweise eine Bereitstellung auf AEM 6.4 planen, sollten Sie die Version der uber-jar auf 6.4.0 aktualisieren.
Der AEM-Projektarchetyp nutzt natürlich die Kernkomponenten.
Die Kernkomponenten werden in AEM automatisch im Standard-Ausführungsmodus installiert und von der WKND-Beispiel-Site verwendet. In einem Produktions-Ausführungsmodus (nosamplecontent
) sind die Kernkomponenten nicht verfügbar.
Um die Kernkomponenten in allen Implementierungen zu nutzen, empfiehlt es sich daher, sie in das Maven-Projekt einzubeziehen.
Nach jeder Version der Kernkomponenten wird im Allgemeinen eine Version des AEM-Projektarchetyps veröffentlicht, sodass der neueste Archetyp die neueste Version der Kernkomponenten verwendet.
Eine neue Version des Archetyps folgt möglicherweise nicht direkt einer neuen Version der Kernkomponenten, daher sollten Sie die Abhängigkeit von den Kernkomponenten auf die neueste Version aktualisieren.
Die Datei „core.wcm.components.example“enthält eine Reihe von Beispielseiten, die Beispiele für die Kernkomponenten illustrieren. Als Best Practice sollten Sie bei der Bereitstellung eines Projekts für die Produktion diese Abhängigkeit und die Einbeziehung von Unterpaketen entfernen.
Es gibt drei Testebenen im Projekt, und da es sich bei ihnen um unterschiedliche Testtypen handelt, werden sie auf unterschiedliche Weise oder an verschiedenen Orten durchgeführt.
mvn clean test
mvn clean verify -PintegrationTests
Sie haben den AEM-Projektarchetyp erstellt und installiert. Was jetzt? Der Archetyp ist klein, besteht aber aus vielen Beispielen leistungsfähiger AEM-Funktionen, die gemäß empfohlenen Best Practices konfiguriert wurden. Verwenden Sie diese, um anzuzeigen, wie Sie diese Funktionen in Ihrem Projekt nutzen können. Bei jedem Projekt müssen Sie wahrscheinlich folgende Aufgaben durchführen: