El Arquetipo de proyecto AEM crea un proyecto de Adobe Experience Manager mínimo basado en optimizaciones como punto de partida para sus propios proyectos AEM. Las propiedades que se deben proporcionar al utilizar este arquetipo le permiten especificar los nombres de todas las partes de este proyecto, así como controlar determinadas funciones opcionales.
El uso del Arquetipo de proyecto AEM lo coloca en el camino hacia la construcción de un proyecto de AEM basado en optimizaciones con sólo unas pocas pulsaciones de tecla. Al usar el arquetipo, todas las piezas ya estarán en su lugar, de modo que mientras el proyecto resultante sea mínimo, ya implementará todas las características clave de AEM para que todo lo que tenga que hacer sea construir en la parte superior y extender.
Por supuesto, hay muchos elementos que entran en un proyecto de AEM exitoso, pero el uso del arquetipo del proyecto AEM es una base sólida y se recomienda encarecidamente para cualquier proyecto AEM.
El arquetipo del proyecto hace que sea fácil empezar a desarrollar en AEM. Puede dar sus primeros pasos de varias maneras.
El arquetipo AEM está compuesto por módulos:
/apps
y /etc
partes del proyecto, es decir, clientes JS y CSS, componentes y plantillas.Los módulos de AEM Archetype representados en Maven se implementan en AEM como paquetes de contenido que representan la aplicación, el contenido y los paquetes OSGi necesarios.
Para utilizar el arquetipo, primero debe crear un proyecto que genere los módulos en una estructura de archivos local como descrita anteriormente. Como parte de la generación de proyectos, se pueden definir varias propiedades para el proyecto, como el nombre del proyecto, la versión, etc.
Al crear el proyecto con Maven se crean los artefactos (paquetes y paquetes OSGi) que se pueden implementar en AEM. Se pueden utilizar comandos y perfiles Maven adicionales para implementar los artefactos del proyecto en una instancia de AEM.
Para empezar, puede utilizar la extensión Eclipse de AEM y seguir el Asistente para nuevo proyecto y elegir AEM Proyecto de Módulo múltiple de muestra para utilizar una versión liberada del arquetipo.
Por supuesto también puede invocar Maven directamente.
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
en el número de versión del último arquetipo de proyecto de AEM.aemVersion=cloud
para AEM como Cloud Service;aemVersion=6.5.0
para Servicios administrados de Adobe o in situ.appTitle="My Site"
para definir el título del sitio Web y los grupos de componentes.appId="mysite"
para definir Maven artifactsId, los nombres de los componentes, la configuración y las carpetas de contenido, así como los nombres de las bibliotecas de clientes.groupId="com.mysite"
para definir el groupId de Maven y el paquete de origen de Java.Se recomienda agregar el perfil adobe-public
a su archivo Maven settings.xml
para agregar automáticamente repo.adobe.com al proceso de compilación.
Aquí](https://helpx.adobe.com/es/experience-manager/kb/SetUpTheAdobeMavenRepository.html) se puede encontrar un ejemplo de POM [.
Las siguientes propiedades están disponibles al crear un proyecto con el arquetipo.
Nombre | Predeterminado | Descripción |
---|---|---|
appTitle |
El título de la aplicación se utilizará para el título del sitio web y los grupos de componentes (p. ej. "My Site" ). |
|
appId |
El nombre técnico se utilizará para los nombres de los componentes, la configuración y las carpetas de contenido, así como los nombres de las bibliotecas de cliente (p. ej. "mysite" ). |
|
artifactId |
${appId} |
ID de artefacto de la mueble base (p. ej. "mysite" ). |
groupId |
ID de grupo de Maven base (p. ej. "com.mysite" ). |
|
package |
${groupId} |
Paquete de fuentes Java (p. ej. "com.mysite" ). |
version |
1.0-SNAPSHOT |
Versión del proyecto (p. ej. 1.0-SNAPSHOT ). |
aemVersion |
6.5.0 |
Destinatario AEM versión (puede ser cloud para AEM como Cloud Service; o 6.5.0 , o 6.4.4 para Servicios administrados de Adobe o in situ). |
sdkVersion |
latest |
Cuando aemVersion=cloud se puede especificar una versión SDK (p. ej. 2020.02.2265.20200217T222518Z-200130 ). |
includeDispatcherConfig |
y |
Incluye una configuración de distribuidor para cloud o para AMS/in situ, según el valor de aemVersion (puede ser y o n ). |
frontendModule |
none |
Incluye un módulo de compilación de front-end de Webpack que genera bibliotecas de cliente (puede ser general o none para sitios regulares; puede ser angular o react para una aplicación de una sola página que implemente el Editor de SPA). |
languageCountry |
en_us |
Idioma y código de país desde los que crear la estructura de contenido (p. ej. en_us ). |
singleCountry |
y |
Incluye una estructura de contenido maestro-idioma (puede ser y o n ). |
includeExamples |
y |
Incluye un sitio de ejemplo de Biblioteca de componentes (puede ser y o n ). |
includeErrorHandler |
n |
Incluye una página de respuesta personalizada 404 que será global para toda la instancia (puede ser y o n ). |
Si el arquetipo se ejecuta en modo interactivo la primera vez, no se pueden cambiar las propiedades con valores predeterminados (consulte ARCHETYPE-308 para obtener más información). El valor se puede cambiar cuando se deniega la confirmación de la propiedad al final y se repite el cuestionario, o pasando el parámetro en la línea de comandos (p. ej. -DoptionIncludeExamples=n
).
Cuando se ejecuta en Windows y se genera la configuración del despachante, debe estar ejecutando un símbolo del sistema elevado o el Subsistema de Windows para Linux (consulte número 329).
El proyecto principal generado admite diferentes perfiles de implementación al ejecutar mvn install
.
ID de perfil | Descripción |
---|---|
autoInstallBundle |
Monte el paquete principal con el complemento maven-sling en la consola felix |
autoInstallPackage |
Instale el paquete de contenido ui.content y ui.apps con el complemento content-package-maven-plugin en el administrador de paquetes para la instancia de creación predeterminada en localhost, puerto 4502. El nombre de host y el puerto se pueden cambiar con las propiedades definidas por el usuario aem.host y aem.port . |
autoInstallPackagePublish |
Instale el paquete de contenido ui.content y ui.apps con el complemento content-package-maven-plugin en el administrador de paquetes para publicar la instancia predeterminada en localhost, puerto 4503. El nombre de host y el puerto se pueden cambiar con las propiedades definidas por el usuario aem.host y aem.port . |
autoInstallSinglePackage |
Instale el paquete de contenido all con el complemento content-package-maven-plugin en el administrador de paquetes para la instancia de creación predeterminada en localhost, puerto 4502. El nombre de host y el puerto se pueden cambiar con las propiedades definidas por el usuario aem.host y aem.port . |
autoInstallSinglePackagePublish |
Instale el paquete de contenido all con el complemento content-package-maven-plugin en el administrador de paquetes para la instancia de publicación predeterminada en localhost, puerto 4503. El nombre de host y el puerto se pueden cambiar con las propiedades definidas por el usuario aem.host y aem.port . |
integrationTests |
Ejecuta las pruebas de integración proporcionadas en la instancia de AEM (solo para la fase verify ) |
Para generar todos los módulos ejecutados en el directorio raíz del proyecto, utilice el siguiente comando Maven.
mvn clean install
Si tiene una instancia de AEM en ejecución, puede compilar y empaquetar todo el proyecto e implementarlo en AEM con el siguiente comando Maven.
mvn clean install -PautoInstallPackage
Para implementarlo en una instancia de publicación, ejecute este comando.
mvn clean install -PautoInstallPackagePublish
Como alternativa, para implementar en una instancia de publicación, ejecute este comando.
mvn clean install -PautoInstallPackage -Daem.port=4503
O bien, para implementar únicamente el paquete para el autor, ejecute este comando.
mvn clean install -PautoInstallBundle
El pom.xml
en la raíz del proyecto (<src-directory>/<project>/pom.xml
) se conoce como POM principal y dirige la estructura del proyecto, así como administra dependencias y ciertas propiedades globales del proyecto.
La sección <properties>
del POM principal define varias propiedades globales que son importantes para la implementación del proyecto en una instancia de AEM, como nombre de usuario/contraseña, nombre de host/puerto, etc.
Estas propiedades están configuradas para implementarse en una instancia de AEM local, ya que ésta es la compilación más común que los desarrolladores van a realizar. Tenga en cuenta que hay propiedades que implementar en una instancia de autor, así como en una instancia de publicación. Aquí también se establecen las credenciales para autenticarse con la instancia de AEM. Se utilizan las credenciales predeterminadas admin:admin.
Estas propiedades se configuran para que se puedan anular al implementar en entornos de nivel superior. De este modo, los archivos POM no tienen que cambiar, pero las variables como aem.host
y sling.password
pueden reemplazarse mediante argumentos de línea de comandos:
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd
La sección <modules>
del POM principal define los módulos que el proyecto generará. De forma predeterminada, el proyecto genera los módulos estándar definidos anteriormente: core, ui.apps, ui.content, ui.testing y it.launcher. Siempre se pueden añadir más módulos a medida que evoluciona un proyecto.
La sección <dependencyManagement>
del POM principal define todas las dependencias y versiones de las API que se utilizan en el proyecto. Las versiones se deben administrar en el POM principal. Los submódulos como core y ui.apps no deben incluir información de la versión.
Una de las dependencias clave es el AEM uber-jar. Esto incluirá todas las API AEM con una sola entrada de dependencia para la versión de AEM.
Se recomienda actualizar la versión de suber-jar para que coincida con la versión de destinatario de AEM. Por ejemplo, si planea implementar en AEM 6.4, debe actualizar la versión de uber-jar a 6.4.0.
Por supuesto, el arquetipo del proyecto AEM aprovecha los componentes principales.
Los componentes principales se instalan en AEM automáticamente en el modo de ejecución predeterminado y se utilizan en el sitio WKND de muestra. En un modo de ejecución de producción (nosamplecontent
) los componentes principales no están disponibles.
Por lo tanto, para aprovechar los componentes principales en todas las implementaciones, es recomendable incluirlos como parte del proyecto Maven.
Cada versión de los componentes principales suele ir seguida de una versión del arquetipo del proyecto AEM, de modo que el arquetipo más reciente utiliza la versión más reciente de los componentes principales.
Sin embargo, es posible que una nueva versión del arquetipo no siga directamente a una nueva versión de los componentes principales, por lo que puede que desee actualizar la dependencia de los componentes principales a la última versión.
core.wcm.components.samples es un conjunto de páginas de muestra que ilustran ejemplos de los componentes principales. Se recomienda eliminar esta dependencia y la inclusión de subpaquetes al implementar un proyecto para producción.
Hay tres niveles de prueba contenidos en el proyecto y, como son diferentes tipos de pruebas, se ejecutan de diferentes maneras o en diferentes lugares.
mvn clean test
mvn clean verify -PintegrationTests
Así que han construido e instalado el Arquetipo del Proyecto AEM. ¿Y ahora qué? Bueno, el arquetipo es pequeño, pero consiste en muchos ejemplos de poderosas características de AEM configuradas según las mejores prácticas recomendadas. Estas funciones indican cómo puede aprovechar estas funciones en el proyecto. Para cualquier proyecto que necesite: