Show Menu
ARGOMENTI×

AEM Project Archetype

AEM Project Archetype crea un progetto Adobe Experience Manager minimale basato sulle best practice come punto di partenza per i vostri progetti AEM. Le proprietà che devono essere fornite quando si utilizza questo archetype consentono di specificare i nomi di tutte le parti del progetto e di controllare alcune funzioni facoltative.

Perché utilizzare Archetype

Utilizzando AEM Project Archetype (Tipo archivio progetti) si inizia a creare un progetto AEM basato su best practice con poche sequenze di tasti. Utilizzando l'archetype, tutti i pezzi saranno già in atto in modo che mentre il progetto risultante è minimo, esso già implementa tutte le caratteristiche Che cosa si ottiene usando Archetype chiave di AEM in modo che tutto quello che dovete fare è costruire sopra e estendere.
Naturalmente ci sono molti elementi che entrano in un progetto di AEM di successo, ma l'utilizzo AEM Project Archetype è una solida base ed è fortemente consigliato per qualsiasi progetto AEM.

Guida introduttiva

L'archetipo del progetto rende facile iniziare a sviluppare su AEM. I primi passi possono essere effettuati in diversi modi.
  • Esercitazione WKND - Per un'ottima introduzione allo sviluppo di AEM che include come sfruttare l'archetype, vedere la Guida introduttiva AEM Sites - Esercitazione WKND per un esempio pratico che vi guida attraverso l'utilizzo dell'archetype per implementare un progetto semplice.
  • Esercitazione sugli eventi WKND - Se siete particolarmente interessati allo sviluppo di applicazioni a pagina singola (SPA) su AEM, controllate l'esercitazione dedicata agli eventi WKND.
  • Scarica e inizia da solo! - È possibile scaricare facilmente l'archetipo di progetto corrente disponibile su GitHub e creare il primo progetto seguendo i semplici passaggi indicati di seguito .

Che cosa si ottiene usando Archetype

AEM Archetype è composto da moduli:
  • core : è un pacchetto Java contenente tutte le funzionalità di base come servizi OSGi, listener e pianificatori, nonché il codice Java relativo ai componenti, come servlet e filtri di richiesta.
  • ui.apps : contiene le /apps e /etc parti del progetto, ad esempio clientlibs JS e CSS, componenti, modelli, configurazioni specifiche per la modalità di esecuzione e test Hobbes.
  • ui.content : contiene contenuto di esempio utilizzando i componenti del modulo ui.apps.
  • ui.test : è un pacchetto Java contenente test JUnit eseguiti sul lato server. Questo bundle non deve essere distribuito in produzione.
  • ui.launcher : contiene codice colla che distribuisce il bundle ui.test (e i bundle dipendenti) al server e attiva l'esecuzione JUnit remota.
  • ui.frontend.general : (facoltativo) contiene gli artefatti necessari per utilizzare il modulo di build front-end basato su Webpack generale.
  • ui.frontend.response : (Facoltativo) contiene gli artefatti necessari per creare un progetto SPA basato su React utilizzando archetype.
  • ui.frontend.angular : (facoltativo) contiene gli artefatti necessari per creare un progetto SPA basato su Angular utilizzando l’archetipo.
I moduli di Archetype AEM rappresentati in Maven sono distribuiti per AEM come pacchetti di contenuto che rappresentano l'applicazione, il contenuto e i pacchetti OSGi necessari.

Come utilizzare Archetype

Per utilizzare l'archetipo, è innanzitutto necessario creare un progetto, che genera i moduli in una struttura di file locale come precedentemente descritto . Durante la generazione del progetto, è possibile definire diverse proprietà per il progetto, ad esempio nome, versione e così via.
La creazione del progetto con Maven crea gli artefatti (pacchetti e pacchetti OSGi) che possono essere distribuiti per AEM. Altri comandi e profili Maven possono essere utilizzati per distribuire gli artifact del progetto a un'istanza AEM.

Creazione di un progetto

Per iniziare, potete semplicemente utilizzare l'estensione aem-eclipse.html AEM Eclipse e seguire la procedura guidata New Project (Nuovo progetto) e scegliere AEM Sample Multi-Module Project per utilizzare una versione rilasciata dell'archetipo.
Naturalmente si può anche invocare direttamente Maven.
mvn -B archetype:generate \
 -D archetypeGroupId=com.adobe.granite.archetypes \
 -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

  • Impostate XX il numero di versione dell'ultimo tipo di archivio AEM progetto.
  • Impostare aemVersion=cloud per AEM come Cloud Service ; Impostato aemVersion=6.5.0 per Adobe Managed Services o locale. La dipendenza Componenti di base viene aggiunta solo per le versioni Aem non cloud, in quanto i Componenti di base vengono forniti OOTB per AEM come servizio Cloud.
  • Regolate appTitle="My Site" per definire il titolo del sito Web e i gruppi di componenti.
  • Regolate appId="mysite" per definire il Maven artifactId, i nomi delle cartelle dei componenti, delle configurazioni e dei contenuti, nonché i nomi delle librerie dei client.
  • Regola groupId="com.mysite" per definire il Maven groupId e il pacchetto di origine Java.
  • Consultate l’elenco delle proprietà disponibili per verificare se vi sono altre proprietà da regolare.
È buona norma aggiungere il adobe-public profilo al file Maven settings.xml per aggiungere automaticamente repo.adobe.com al processo di creazione di maven.
Un esempio di POM è disponibile qui .

Proprietà

Le seguenti proprietà sono disponibili quando si crea un progetto utilizzando archetype.
Nome
Predefiniti
Descrizione
appTitle
Titolo applicazione, verrà utilizzato per il titolo del sito Web e i gruppi di componenti (ad es. "My Site" ).
appId
Nome tecnico, verrà utilizzato per i nomi dei componenti, delle cartelle di configurazione e di contenuto, nonché per i nomi delle librerie client (ad esempio "mysite" ).
artifactId
${appId}
ID artifact di base Maven (ad es. "mysite" ).
groupId
ID gruppo Base Paradiso (ad es. "com.mysite" ).
package
${groupId}
Pacchetto di origine Java (ad esempio "com.mysite" ).
version
1.0-SNAPSHOT
Versione del progetto (ad es. 1.0-SNAPSHOT ).
aemVersion
6.5.0
AEM versione di destinazione (può essere cloud AEM come Cloud Service ; oppure 6.5.0 , 6.4.4 per i servizi gestiti Adobe o locali).
sdkVersion
latest
Quando è possibile specificare aemVersion=cloud una versione SDK (ad es. 2020.02.2265.20200217T222518Z-200130 ).
includeDispatcherConfig
y
Include una configurazione dispatcher sia per il cloud che per AMS/locale, a seconda del valore di aemVersion (può essere y o n ).
frontendModule
none
Include un modulo di generazione frontale Webpack che genera le librerie client (può essere general o none per siti regolari); può essere angular o react per un'app a pagina singola che implementa l'Editor introduction.html SPA).
languageCountry
en_us
Lingua e codice del paese da cui creare la struttura del contenuto (ad esempio en_us ).
singleCountry
y
Include una struttura del contenuto master del linguaggio (può essere y o n ).
includeExamples
y
Include un sito di esempio della libreria di componenti (può essere y o n ).
includeErrorHandler
n
Include una pagina di risposta personalizzata 404 che sarà globale per l'intera istanza (può essere y o n ).
Se l'archetype viene eseguito in modalità interattiva la prima volta, le proprietà con valori predefiniti non possono essere modificate (per ulteriori dettagli, vedere ARCHETYPE-308 ). Il valore può essere modificato quando la conferma della proprietà alla fine viene negata e il questionario viene ripetuto, o passando il parametro nella riga di comando (ad es. -DoptionIncludeExamples=n ).
Quando si esegue in Windows e si genera la configurazione del dispatcher, è necessario eseguire un prompt di comando elevato o il sottosistema Windows per Linux (vedere il numero 329 ).

Profili

Il progetto generato maven supporta profili di distribuzione diversi durante l'esecuzione mvn install .
ID profilo
Descrizione
autoInstallBundle
Installare il pacchetto di base con il plugin maven-sling alla console Felix
autoInstallPackage
Installate il pacchetto di contenuti ui.content e ui.apps con il plug-in content-package-maven-plug in nel gestore pacchetti per impostare l'istanza di creazione predefinita su localhost, porta 4502. Nome host e porta possono essere modificati con le proprietà definite aem.host e aem.port dall'utente.
autoInstallPackagePublish
Installate il pacchetto di contenuto ui.content e ui.apps con il plug-in content-package-maven-in nel gestore pacchetti per impostare l'istanza di pubblicazione predefinita su localhost, porta 4503. Nome host e porta possono essere modificati con le proprietà definite aem.host e aem.port dall'utente.
autoInstallSinglePackage
Installate il pacchetto di all contenuto con il plug-in content-package-maven al gestore pacchetti per impostare l’istanza di creazione predefinita su localhost, porta 4502. Nome host e porta possono essere modificati con le proprietà definite aem.host e aem.port dall'utente.
autoInstallSinglePackagePublish
Installate il pacchetto di all contenuto con il plug-in content-package-maven al gestore pacchetti per impostare l’istanza di pubblicazione predefinita su localhost, porta 4503. Nome host e porta possono essere modificati con le proprietà definite aem.host e aem.port dall'utente.
integrationTests
Esegue i test di integrazione forniti sull'istanza AEM (solo per la verify fase)

Creazione e installazione

Per creare tutti i moduli eseguiti nella directory principale del progetto, utilizzate il seguente comando Maven.
mvn clean install

Se disponete di un'istanza AEM in esecuzione, potete creare e creare l'intero progetto e distribuirlo in AEM con il seguente comando Maven.
mvn clean install -PautoInstallPackage

Per distribuirlo in un'istanza di pubblicazione, eseguite questo comando.
mvn clean install -PautoInstallPackagePublish

In alternativa, per distribuire in un'istanza di pubblicazione, eseguite questo comando.
mvn clean install -PautoInstallPackage -Daem.port=4503

Oppure, per distribuire solo il bundle all'autore, eseguite questo comando.
mvn clean install -PautoInstallBundle

POM principale

Il pom.xml livello principale del progetto ( <src-directory>/<project>/pom.xml ) è noto come POM padre e guida la struttura del progetto, oltre a gestire le dipendenze e alcune proprietà globali del progetto.

Proprietà progetto globale

La <properties> sezione del POM principale definisce diverse proprietà globali importanti per la distribuzione del progetto in un’istanza AEM come nome utente/password, nome host/porta, ecc.
Queste proprietà sono configurate per la distribuzione in un'istanza AEM locale, in quanto si tratta della build più comune che gli sviluppatori faranno. Notate che esistono proprietà da distribuire a un’istanza di creazione e a un’istanza di pubblicazione. Anche in questo caso le credenziali sono impostate per l'autenticazione con l'istanza AEM. Vengono utilizzate le credenziali admin:admin predefinite.
Queste proprietà sono configurate in modo che possano essere sostituite durante la distribuzione in ambienti di livello superiore. In questo modo i file POM non devono essere modificati, ma le variabili come aem.host e sling.password possono essere sostituite tramite gli argomenti della riga di comando:
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd

Struttura del modulo

La <modules> sezione del POM padre definisce i moduli che il progetto genererà. Per impostazione predefinita, il progetto crea i moduli standard precedentemente definiti : core, ui.apps, ui.content, ui.test e it.launcher. È sempre possibile aggiungere più moduli man mano che un progetto si evolve.

Dipendenze

La <dependencyManagement> sezione del POM principale definisce tutte le dipendenze e le versioni delle API utilizzate nel progetto. Le versioni devono essere gestite nel POM principale. I sottomoduli come core e ui.apps non devono includere informazioni sulle versioni.

Uber-Jar

Una delle dipendenze chiave è il AEM uber-jar . Questo includerà tutte le API AEM con una sola voce di dipendenza per la versione di AEM.
È consigliabile aggiornare la versione uber-jar in modo che corrisponda alla versione di destinazione di AEM. Ad esempio, se pianificate di distribuire a AEM 6.4, aggiornate la versione di uber-jar a 6.4.0.

Componenti core

Il AEM Project Archetype, ovviamente, sfrutta i componenti core.
I componenti core vengono installati automaticamente in AEM in modalità di esecuzione predefinita e utilizzati dal sito WKND di esempio. In una modalità di esecuzione di produzione ( nosamplecontent ) i componenti core non sono disponibili.
Pertanto, al fine di sfruttare i componenti core in tutte le distribuzioni, è consigliabile includerli come parte del progetto Maven.
A ogni rilascio dei componenti core segue generalmente una release dell’archivio AEM progetti, in modo che l’ultimo archetipo utilizzi la versione più recente dei componenti core.
Tuttavia, una nuova versione dell'archetipo potrebbe non seguire direttamente una nuova versione dei componenti core, pertanto è possibile aggiornare la dipendenza dai componenti core alla versione più recente.
Gli esempi core.wcm.components.example sono una serie di pagine di esempio che illustrano esempi dei componenti core. Come procedura ottimale, quando si distribuisce un progetto per la produzione è necessario rimuovere questa dipendenza e l'inclusione del sottopacchetto.

Test

Il progetto contiene tre livelli di test e, poiché sono tipi diversi di test, vengono eseguiti in modi diversi o in luoghi diversi.
  • Prova di unità nel nucleo: Questo mostra il classico unit testing del codice contenuto nel bundle. Per eseguire il test, eseguire:
    • mvn clean test
  • Test di integrazione lato server: Questi test vengono eseguiti come unità nell'ambiente AEM, ad esempio sul server AEM. Per eseguire il test, eseguire:
    • mvn clean verify -PintegrationTests
  • Test Hobbes.js lato client: Si tratta di test basati su JavaScript sul browser per verificare il comportamento sul lato browser. Per eseguire il test:
    1. Caricate AEM nel browser come fareste per creare una pagina.
    2. Open the page in Developer mode
    3. Aprite il pannello a sinistra e passate alla scheda Test .
    4. Trovare i test MyName generati ed eseguirli.

Passaggi successivi

Quindi avete costruito e installato il AEM Project Archetype. E adesso? Beh, l'archetipo è piccolo, ma è costituito da molti esempi di potenti funzioni AEM configurate in base alle best practice consigliate. Utilizzate queste opzioni per indicare come sfruttare queste funzionalità nel progetto. Per qualsiasi progetto è probabilmente necessario: