AEM Project Archetype은 사용자 자신의 AEM 프로젝트의 시작점으로서 모범 사례 기반 Adobe Experience Manager 프로젝트를 생성합니다. 이 Archetype 사용 시 제공되는 속성을 사용하여 이 프로젝트의 전체 이름을 지정하고 특정 옵션 기능을 제어할 수 있습니다.
AEM Project Archetype을 사용하여 몇 번의 키 입력만으로 모범 사례 기반 AEM 프로젝트를 빌드할 수 있습니다. Archetype을 사용하여, 결과 프로젝트가 최소화되도록 모든 콘텐츠를 활용하고 맨 위에서 프로젝트를 빌드하고 확장하도록 AEM의 주요 기능을 모두 구현합니다.
여러 요소들이 성공적인 AEM 프로젝트에 투입되지만 AEM Project Archetype 사용은 AEM 프로젝트에서 적극 권장되는 매우 기초적인 방법입니다.
Project Archetype을 통해 AEM에서 개발 시작하기가 수월해집니다. 여러 방식으로 첫 단계를 수행할 수 있습니다.
AEM Project Archetype은 모듈로 구성됩니다.
/apps
및 /etc
(예: JS 및 CSS Clientlib, 구성 요소 및 템플릿)가 포함됩니다.애플리케이션, 콘텐츠와 필요한 OSGi 번들을 표시하는 콘텐츠 패키지로서 Maven에 표시된 AEM Archetype 모듈을 AEM으로 배포합니다.
Archetype을 사용하려면 먼저 이전에 설명한 로컬 파일의 모듈을 생성하는 프로젝트를 만들어야 합니다. 프로젝트 생성의 일부로 프로젝트 이름, 버전 등 다수의 프로젝트 속성을 정의할 수 있습니다.
Maven과 함께 프로젝트를 빌드하면 AEM으로 배포 가능한 아티팩트(패키지 및 OSGi 번들)를 제작할 수 있습니다. 추가 Maven 명령 및 프로필을 사용하여 프로젝트 아티팩트를 AEM으로 배포할 수 있습니다.
시작하려면 AEM Eclipse 확장 기능을 최대한 활용하고, 새 프로젝트 마법사를 따라 AEM 샘플 멀티 모듈 프로젝트를 선택하여 릴리스된 Archetype 버전을 사용할 수 있습니다.
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
를 최신 AEM Project Archetype의 버전 번호로 설정합니다.aemVersion=cloud
를 설정합니다.aemVersion=6.5.0
를 설정합니다.appTitle="My Site"
를 조정하여 웹 사이트 제목과 구성 요소 그룹을 정의합니다.appId="mysite"
를 조정하여 Maven artifactId, 구성 요소 config 및 콘텐츠 폴더 이름과 클라이언트 라이브러리 이름을 정의합니다.groupId="com.mysite"
를 조정하여 Maven groupId 및 Java 소스 패키지를 정의합니다.repo.adobe.com을 maven build process로 자동 추가하려면 adobe-public
프로필을 Mavensettings.xml
파일로 추가하는 것이 좋습니다.
예제 POM은 여기에서 찾을 수 있습니다.
Archetype을 사용하여 프로젝트를 제작할 때 다음 속성을 사용할 수 있습니다.
이름 | 기본값 | 설명 |
---|---|---|
appTitle |
웹 사이트 제목과 구성 요소 그룹(예: "My Site" )에 애플리케이션 제목을 사용합니다. |
|
appId |
구성 요소, config 및 콘텐츠 폴더 이름과 클라이언트 라이브러리 이름(예: "mysite" )에 기술적 용어가 사용됩니다. |
|
artifactId |
${appId} |
기본 Maven 아티팩트 ID(예: "mysite" ). |
groupId |
기본 Maven 그룹 ID(예: "com.mysite" ). |
|
package |
${groupId} |
Java 소스 패키지(예: "com.mysite" ). |
version |
1.0-SNAPSHOT |
프로젝트 버전(예: 1.0-SNAPSHOT ) |
aemVersion |
cloud |
대상 AEM 버전(AEM as a Cloud Service나 6.5.0 용 cloud 또는 Adobe 관리 서비스나 온프레미스용 6.4.4 일 수 있음) |
sdkVersion |
latest |
aemVersion=cloud 한 개의 SDK 버전이 지정될 경우(예: 2020.02.2265.20200217T222518Z-200130 ) |
includeDispatcherConfig |
y |
aemVersion (y 또는 n 일 수 있음)의 값에 따라 Cloud 또는 AMS/온프레미스용 발송자 구성을 포함합니다. |
frontendModule |
general |
클라이언트 라이브러리를 생성하는 Webpack 프론트엔드 빌드 모듈(일반 사이트용 general 또는 none 일 수 있고, SPA 편집기를 구현하는 단일 페이지 앱용 angular 또는 react 일 수 있음)을 포함합니다. |
language |
en |
다음 코드(예: en , deu )에서 콘텐츠 구조를 만드는 언어 코드(ISO 639-1). |
country |
us |
다음 코드(예: US )에서 콘텐츠 구조를 만드는 국가 코드(ISO 3166-1). |
singleCountry |
y |
언어 습득 콘텐츠 구조(y 또는 n 일 수 있음)를 포함합니다. |
includeExamples |
n |
구성 요소 라이브러리 예시 사이트(y 또는 n 일 수 있음)를 포함합니다. |
includeErrorHandler |
n |
전체 인스턴스 전역의 맞춤형 404 반응형 페이지(y 또는 n 일 수 있음)를 포함합니다. |
includeCommerce |
n |
CIF 핵심 구성 요소 종속성을 포함하고 해당 아티팩트를 생성합니다. |
commerceEndpoint |
CIF에만 필요합니다. 옵션: 아직 사용하지 않은 상거래 시스템 GraphQ 서비스 끝점(예: https://hostname.com/grapql ). |
|
datalayer |
y |
Adobe 클라이언트 데이터 레이어와의 통합 기능을 활성화합니다. |
amp |
n |
생성된 프로젝트 템플릿에 대한 AMP 지원을 활성화합니다. |
enableDynamicMedia |
n |
프로젝트 정책 설정으로 기초 Dynamic Media 구성 요소를 활성화하고 핵심 이미지 구성 요소 정책으로 Dynamic Media 기능을 작동합니다. |
enableSSR |
n |
프론트엔드 프로젝트용 SSR을 활성화하는 옵션 |
precompiledScripts |
n |
ui.apps 의 서버측 스크립트를 미리 컴파일하고 ui.apps 프로젝트에서 빌드에 보조 번들 아티팩트로 스크립트를 첨부하는 옵션. aemVersion 을 cloud 로 설정해야 합니다. |
대화형 모드에서 Archetype을 처음 실행하면 기본값을 가진 속성을 변경할 수 없습니다(자세한 내용은 ARCHETYPE-308 참조). 끝부분의 속성 확인이 거부되고 질문이 반복되거나 명령줄의 매개 변수를 전달하면 값이 변경될 수 있습니다(예: -DoptionIncludeExamples=n
).
Windows에서 실행하고 발송자 구성을 생성하는 경우 상위 명령 프롬프트나 Linux용 Windows 하위 시스템에서 실행해야 합니다(문제 329 참조).
mvn install
실행 시 생성된 Maven 프로젝트는 서로 다른 배포 프로필을 지원합니다.
프로필 ID | 설명 |
---|---|
autoInstallBundle |
maven-sling-plugin이 포함된 핵심 번들을 Felix 콘솔에 설치합니다. |
autoInstallPackage |
content-package-maven-plugin이 포함된 ui.content 및 ui.apps 콘텐츠 패키지를 패키지 매니저에 설치하여 localhost, port 4502에 작성자 인스턴스를 기본 설정합니다. aem.host 및 aem.port 사용자 정의 속성으로 된 호스트 이름과 포트를 변경할 수 있습니다. |
autoInstallPackagePublish |
content-package-maven-plugin이 포함된 ui.content 및 ui.apps 콘텐츠 패키지를 패키지 매니저에 설치하여 localhost, port 4503에 게시 인스턴스를 기본 설정합니다. aem.host 및 aem.port 사용자 정의 속성으로 된 호스트 이름과 포트를 변경할 수 있습니다. |
autoInstallSinglePackage |
content-package-maven-plugin이 포함된 all 콘텐츠 패키지를 패키지 매니저에 설치하여 localhost, port 4502에 작성자 인스턴스를 기본 설정합니다. aem.host 및 aem.port 사용자 정의 속성으로 된 호스트 이름과 포트를 변경할 수 있습니다. |
autoInstallSinglePackagePublish |
content-package-maven-plugin이 포함된 all 콘텐츠 패키지를 패키지 매니저에 설치하여 localhost, port 4503에 게시 인스턴스를 기본 설정합니다. aem.host 및 aem.port 사용자 정의 속성으로 된 호스트 이름과 포트를 변경할 수 있습니다. |
integrationTests |
AEM 인스턴스에 제공된 통합 테스트를 실행합니다(verify 단계만 해당). |
precompiledScripts |
precompiledScripts 속성이 y 로 설정된 상태에서 프로젝트가 생성되면 자동으로 정의됩니다. 프로필은 기본적으로 활성화되고, all 콘텐츠 패키지에 포함된 미리 컴파일된 스크립트를 사용하여 ui.apps 내에서 OSGi 번들을 생성합니다. 프로필은 -DskipScriptPrecompilation=true 을 통해 비활성화될 수 있습니다. |
모든 모듈을 빌드하려면 프로젝트 루트 디렉터리를 실행하고 다음 Maven 명령을 따릅니다.
mvn clean install
AEM 인스턴스가 실행 중인 경우 다음 Maven 명령을 사용하여 전체 프로젝트를 빌드 및 패키징하고 AEM에 배포할 수 있습니다.
mvn clean install -PautoInstallPackage
게시 인스턴스로 배포하려면 이 명령을 실행합니다.
mvn clean install -PautoInstallPackagePublish
또는 게시 인스턴스로 배포하려면 이 명령을 실행합니다.
mvn clean install -PautoInstallPackage -Daem.port=4503
또는 번들만 작성자로 배포하려면 이 명령을 실행합니다.
mvn clean install -PautoInstallBundle
프로젝트 루트(<src-directory>/<project>/pom.xml
)의 pom.xml
는 상위 POM이라고 합니다. 이는 프로젝트 구조를 유도하고 프로젝트에 대한 종속성 및 특정 전역 속성을 관리합니다.
상위 POM의 <properties>
섹션은 AEM 인스턴스에서 프로젝트를 구현하는 데 중요한 몇 가지 전역 속성(예: 사용자 이름/암호, 호스트 이름/포트 등)을 정의합니다.
이 속성을 설정하여 로컬 AEM 인스턴스로 배포합니다. 이는 개발자가 수행할 수 있는 가장 일반적인 빌드입니다. 작성자 인스턴스와 게시 인스턴스에 배포되는 속성이 있습니다. 여기서 자격 증명을 설정하여 AEM 인스턴스를 인증합니다. 기본 admin:admin 자격 증명을 사용합니다.
상위 수준의 환경에 배포할 때 이러한 속성이 재정의될 수 있도록 설정합니다. 이러한 방식으로 POM 파일은 변경될 수 없지만 aem.host
및 sling.password
와 같은 변수는 다음 명령줄 인수를 통해 재정의될 수 있습니다.
mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd
상위 POM의 <modules>
섹션은 프로젝트가 빌드할 모듈을 정의합니다. 기본적으로 프로젝트는 이전에 정의된 표준 모듈(ore, ui.apps, ui.content, ui.tests 및 it.launcher 등)을 빌드합니다. 프로젝트가 커지면 언제든지 모듈을 추가할 수 있습니다.
상위 POM의 <dependencyManagement>
섹션은 프로젝트에 사용되는 종속성과 API 버전을 모두 정의합니다. 상위 POM에서 버전을 관리해야 합니다. core 및 ui.apps 등 하위 모듈에는 버전 정보가 제외되어야 합니다.
주요 종속성 중 하나는 AEM Java API Jar입니다. AEM 버전용 단일 종속성 목록이 있는 모든 AEM API가 여기에 포함됩니다.
AEM의 대상 버전에 일치하는 uber-jar 버전을 업데이트하는 것이 좋습니다. 예를 들어 AEM 6.4에 배포하려면 uber-jar 버전을 6.4.0으로 업데이트하는 것이 좋습니다.
AEM Project Archetype은 핵심 구성 요소를 활용합니다.
기본 실행 모드에서 AEM에 핵심 구성 요소를 자동으로 설치하고 샘플 WKND 사이트에서 사용합니다. 제작 실행 모드(nosamplecontent
)에서는 핵심 구성 요소를 사용할 수 없습니다.
따라서 모든 배포에서 핵심 구성 요소를 활용하려면 Maven 프로젝트의 일부로 포함시키는 것이 좋습니다.
각 핵심 구성 요소 릴리스 다음에 AEM Project Archetype 릴리스가 제공되면 최신 Archetype이 최신 버전의 핵심 구성 요소를 사용합니다.
하지만 새 버전의 Archetype 다음에 새 버전의 핵심 구성 요소가 바로 제공되지 않으면 핵심 구성 요소의 종속성을 최신 버전으로 업데이트할 수 있습니다.
core.wcm.components.예제는 핵심 구성 요소의 예제를 나타내는 샘플 페이지 세트입니다. 제작용 프로젝트를 배포할 때 이 종속성과 하위 패키지 포함을 제거하는 것이 좋습니다.
세 가지 수준의 테스트가 프로젝트에 포함되어 있습니다. 테스트의 유형이 서로 다르기 때문에 실행 방법 및 위치가 각각 다릅니다.
mvn clean test
mvn clean verify -PintegrationTests
AEM Project Archetype을 빌드하고 설치했습니다. 이제 무엇을 합니까? Archetype의 규모는 작지만 권장 모범 사례에 따라 강력한 AEM 기능에 대한 여러 예제들로 구성됩니다. 이를 통해 이러한 기능이 프로젝트에서 어떻게 활용되는지 나타냅니다. 프로젝트의 경우 다음 작업을 수행해야 합니다.