L’Archetipo progetto AEM crea un progetto AEM minimo basato sulle best practice di Adobe Experience Manager come punto di partenza per i tuoi progetti AEM. Le proprietà che devono essere fornite quando si utilizza questo archetipo consentono di specificare i nomi di tutte le parti del progetto e di controllare alcune funzioni facoltative.
Utilizzando Archetipo progetto AEM puoi creare un progetto AEM basato sulle best practice con poche sequenze di tasti. Con l’archetipo, tutti i pezzi sono già in posizione in modo che, pur se il progetto risultante è minimo, implementa già tutte le caratteristiche chiave di AEM in modo che tutto quello che devi fare è continuare a sviluppare ed estendere.
Naturalmente, ci sono molti elementi che entrano in un progetto di AEM riuscito, ma l’utilizzo di Archetipo progetto AEM è una solida base ed è vivamente consigliato per qualsiasi progetto AEM.
L’archetipo del progetto rende facile iniziare a sviluppare in AEM. Puoi iniziare in diversi modi.
L’Archetipo progetto AEM è costituito da moduli:
/apps
e /etc
del progetto, ad esempio clientlib JS e CSS, componenti e modelli.I moduli di Archetipo progetto AEM rappresentati in Maven vengono distribuiti ad AEM come pacchetti di contenuti che rappresentano l’applicazione, il contenuto e i bundle OSGi necessari.
Per utilizzare l’archetipo, devi innanzitutto creare un progetto che generi i moduli in una struttura di file locale come descritto in precedenza. Come parte della creazione del progetto, è possibile definire una serie di proprietà del progetto, come, ad esempio, nome, versione e così via.
Lo sviluppo del progetto con Maven crea gli artefatti (pacchetti e bundle OSGi) che possono essere distribuiti ad AEM. Ulteriori comandi e profili Maven possono essere utilizzati per distribuire gli artefatti del progetto s un’istanza di AEM.
Per iniziare, puoi semplicemente utilizzare l’estensione AEM Eclipse e seguire la procedura guidata Nuovo progetto e scegliere Esempio di progetto con più moduli in AEM per utilizzare una versione rilasciata dell’archetipo.
Naturalmente, puoi anche richiamare direttamente Maven.
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
sul numero di versione del più recente Archetipo progetto AEM.aemVersion=cloud
per AEM as a Cloud Service;aemVersion=6.5.0
per Adobe Managed Services oppure on-premise.appTitle="My Site"
per definire il titolo del sito web e i gruppi di componenti.appId="mysite"
per definire l’ID dell’artefatto Maven, i nomi delle cartelle di componenti, configurazione e contenuto nonché i nomi delle librerie client.groupId="com.mysite"
per definire l’ID gruppo Maven e il pacchetto sorgente Java.È consigliabile aggiungere il profilo adobe-public
al file Maven settings.xml
per aggiungere automaticamente repo.adobe.com al processo di sviluppo Maven.
Un esempio di POM (Project Object Model) è disponibile qui.
Quando crei un progetto utilizzando l’archetipo, sono disponibili le seguenti proprietà.
Nome | Predefiniti | Descrizione |
---|---|---|
appTitle |
Titolo dell’applicazione, verrà utilizzato come titolo del sito web e dei gruppi di componenti (ad esempio, "My Site" ). |
|
appId |
Nome tecnico, verrà utilizzato per i nomi di componenti, cartelle di configurazione e cartelle di contenuto nonché per i nomi delle librerie client (ad esempio, "mysite" ). |
|
artifactId |
${appId} |
ID artefatto Maven di base (ad esempio, "mysite" ). |
groupId |
ID gruppo Maven di base (ad esempio, "com.mysite" ). |
|
package |
${groupId} |
Pacchetto sorgente Java (ad esempio, "com.mysite" ). |
version |
1.0-SNAPSHOT |
Versione del progetto (ad esempio, 1.0-SNAPSHOT ). |
aemVersion |
cloud |
Versione AEM di destinazione (può essere cloud per AEM as a Cloud Service; 6.5.0 o 6.4.4 per Adobe Managed Services oppure on-premise). |
sdkVersion |
latest |
Con aemVersion=cloud è possibile specificare una versione del Software Development Kit (SDK) (ad esempio, 2020.02.2265.20200217T222518Z-200130 ). |
includeDispatcherConfig |
y |
Include una configurazione di Dispatcher sia per il cloud che per AMS/on-premise, a seconda del valore di aemVersion (può essere y o n ). |
frontendModule |
general |
Include un modulo di sviluppo front-end di Webpack che genera le librerie client (può essere general o none per i siti normali; può essere angular o react per una SPA (Single Page App) che implementa l’editor di SPA). |
language |
en |
Codice lingua (ISO 639-1) dal quale creare la struttura del contenuto (ad esempio, en , deu ). |
country |
us |
Codice paese (ISO 3166-1) dal quale creare la struttura del contenuto (ad esempio, US ). |
singleCountry |
y |
Include una struttura di contenuto language-master (può essere y o n ). |
includeExamples |
n |
Include un esempio di sito nella Libreria dei componenti (può essere y o n ). |
includeErrorHandler |
n |
Include una pagina di risposta 404 personalizzata che sarà globale per l’intera istanza (può essere y o n ). |
includeCommerce |
n |
Include le dipendenze dei Componenti core CIF e genera gli artefatti corrispondenti. |
commerceEndpoint |
Obbligatorio solo per CIF. Endpoint opzionale del servizio GraphQL del sistema commerciale da utilizzare (ad esempio https://hostname.com/grapql ). |
|
datalayer |
y |
Attiva l’integrazione con Adobe Client Data Layer. |
amp |
n |
Abilita il supporto AMP per i modelli di progetto generati. |
enableDynamicMedia |
n |
Abilita i componenti Dynamic Media di base nelle impostazioni dei criteri dei progetti e attiva le funzioni Dynamic Media nel criterio del componente core Immagine. |
enableSSR |
n |
Opzione per l’abilitazione di SSR per il progetto front-end |
precompiledScripts |
n |
Opzione per precompilare gli script lato server da ui.apps e allegarli alla build come artefatto del bundle secondario nel progetto ui.apps . aemVersion deve essere impostato su cloud . |
Se l’archetipo viene eseguito in modalità interattiva la prima volta, le proprietà con valori predefiniti non possono essere modificate (per ulteriori informazioni, vedi ARCHETYPE-308). Il valore può essere modificato quando la conferma della proprietà alla fine viene negata e il questionario viene ripetuto oppure fornendo il parametro nella riga di comando (ad esempio, -DoptionIncludeExamples=n
).
Se l’esecuzione è su Windows e stai generando la configurazione di Dispatcher, l’esecuzione deve avvenire da un prompt dei comandi con privilegi elevati oppure nel Sottosistema Windows per Linux (vedi il problema 329).
Il progetto Maven generato supporta diversi profili di distribuzione durante l’esecuzione del comando mvn install
.
ID profilo | Descrizione |
---|---|
autoInstallBundle |
Installa il bundle core con maven-sling-plugin nella console Felix |
autoInstallPackage |
Installa i pacchetti di contenuti ui.content e ui.apps con content-package-maven-plugin nel gestore di pacchetti per impostare l’istanza Autore predefinita su localhost, porta 4502. È possibile modificare il nome host e la porta con le proprietà aem.host e aem.port definite dall’utente. |
autoInstallPackagePublish |
Installa i pacchetti di contenuti ui.content e ui.apps con content-package-maven-plugin nel gestore di pacchetti per impostare l’istanza Publish predefinita su localhost, porta 4503. È possibile modificare il nome host e la porta con le proprietà aem.host e aem.port definite dall’utente. |
autoInstallSinglePackage |
Installa il pacchetto di contenuti all con content-package-maven-plugin nel gestore di pacchetti per impostare l’istanza Autore predefinita su localhost, porta 4502. È possibile modificare il nome host e la porta con le proprietà aem.host e aem.port definite dall’utente. |
autoInstallSinglePackagePublish |
Installa il pacchetto di contenuti all con content-package-maven-plugin nel gestore di pacchetti per impostare l’istanza Publish predefinita su localhost, porta 4503. È possibile modificare il nome host e la porta con le proprietà aem.host e aem.port definite dall’utente. |
integrationTests |
Esegue gli integration test forniti sull’istanza di AEM (solo per la fase verify ) |
precompiledScripts |
Viene definito automaticamente quando il progetto viene generato con la proprietà precompiledScripts impostata su y . Il profilo è attivo per impostazione predefinita e genera un bundle OSGi all’interno di ui.apps con gli script precompilati, che verranno inclusi nel pacchetto di contenuti all . Il profilo può essere disabilitato con -DskipScriptPrecompilation=true . |
Per sviluppare tutti i moduli eseguiti nella directory principale del progetto, utilizza il seguente comando Maven.
mvn clean install
Se hai un’istanza di AEM in esecuzione, puoi sviluppare e creare un pacchetto dell’l’intero progetto e distribuirlo ad AEM con il seguente comando Maven.
mvn clean install -PautoInstallPackage
Per distribuirlo a un’istanza Publish, esegui questo comando.
mvn clean install -PautoInstallPackagePublish
In alternativa, per distribuirlo a un’istanza Publish, esegui questo comando.
mvn clean install -PautoInstallPackage -Daem.port=4503
Per distribuire solo il bundle all’autore, esegui questo comando.
mvn clean install -PautoInstallBundle
Il file pom.xml
nella directory principale del progetto (<src-directory>/<project>/pom.xml
) è noto come POM padre e gestisce la struttura del progetto nonché le dipendenze e alcune proprietà globali del progetto stesso.
La sezione <properties>
del POM padre definisce diverse proprietà globali importanti per la distribuzione del progetto a un’istanza di AEM, come nome utente/password, nome host/porta, ecc.
Queste proprietà sono configurate per la distribuzione a un’istanza di AEM locale, in quanto si tratta dello sviluppo più comune utilizzato dagli sviluppatori. Tieni presente che esistono anche proprietà configurate per la distribuzione a un’istanza Autore e un’istanza Publish. Qui vengono impostate anche le credenziali per l’autenticazione nell’istanza di AEM. Vengono utilizzate le credenziali admin:admin predefinite.
Queste proprietà sono configurate in modo che possano essere ignorate 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 ignorate inserendo argomenti nella riga di comando:
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd
La sezione <modules>
del POM padre definisce i moduli che verranno sviluppati nel progetto. Per impostazione predefinita, il progetto sviluppa i moduli standard precedentemente definiti: core, ui.apps, ui.content, ui.tests e it.launcher. Man mano che un progetto evolve, si potranno sempre aggiungere altri moduli.
La sezione <dependencyManagement>
del POM padre definisce tutte le dipendenze e le versioni delle API utilizzate nel progetto. Le versioni devono essere gestite nel POM padre. I sottomoduli, come core e ui.apps, non devono includere informazioni sulle versioni.
Una delle dipendenze chiave è AEM Java API Jar. Ciò includerà tutte le API di AEM in sola dipendenza per la versione di AEM.
Come best practice, aggiorna la versione di uber-jar in modo che corrisponda alla versione di destinazione di AEM. Ad esempio, se prevedi di distribuire ad AEM 6.4, devi aggiornare la versione di uber-jar alla 6.4.0.
L’Archetipo progetto AEM, ovviamente, utilizza i Componenti core.
I Componenti core vengono automaticamente installati in AEM nella modalità di esecuzione predefinita e vengono utilizzati dall’esempio di sito WKND. In modalità di esecuzione per la produzione (nosamplecontent
) i Componenti core non sono disponibili.
Pertanto, per utilizzare i Componenti core in tutte le implementazioni, è consigliabile includerli come parte del progetto Maven.
Ogni versione dei Componenti core è generalmente seguita da una versione di Archetipo progetto AEM, in modo che l’archetipo più recente 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 potrebbe essere opportuno aggiornare la dipendenza dai Componenti core alla versione più recente.
I core.wcm.components.examples sono un set di esempi di pagine che illustrano esempi di Componenti core. Come best practice, quando distribuisci un progetto per la produzione, dovresti rimuovere questa dipendenza e l’inclusione di pacchetti secondari.
Il progetto contiene tre livelli di test e, poiché esistono diversi tipi di test, essi vengono eseguiti in modi diversi o in posizioni diverse.
mvn clean test
mvn clean verify -PintegrationTests
In questo modo, hai sviluppato e installato Archetipo progetto AEM. E adesso? Bene, l’archetipo è piccolo, ma è costituito da molti esempi di efficienti funzioni AEM configurate in base alle best practice consigliate. Utilizzali come indicatori di come sfruttare queste funzioni nel progetto. Per qualsiasi progetto è probabilmente necessario: