AEM 專案原型

AEM專案原型會建立依最佳作法為基礎的最小Adobe Experience Manager專案,作為您專屬AEM專案的開端。 使用此原型時必須提供的屬性可讓您指定此專案所有部分的名稱,並控制某些選擇性功能。

為何使用原型

使用AEM專案原型可讓您只需按幾下按鍵,即可建立以最佳實務為基礎的AEM專案。 使用原型時,所有片段都已準備就緒,因此雖然產生的專案最小,但已實施所有 主要功能 AEM ,您只需在上面建置並延伸。

當然,成功的AEM專案有許多元素,但使用AEM專案原型是堅實的基礎,強烈建議用於任何AEM專案。

快速入門

專案原型可讓您輕鬆開始在AEM上開發。 您可以透過多種方式邁出第一步。

  • WKND教學課程 — 如需在AEM上進行開發的詳細介紹,包括如何運用原型,請參閱 AEM Sites - WKND教學課程快速入門 此實用範例將引導您使用原型來實作簡單專案。
  • WKND事件教學課程 — 如果您特別想在AEM上開發單頁應用程式(SPA),請務必檢視專屬的 WKND事件教學課程.
  • 自行下載並開始使用! — 您可以輕鬆下載GitHub上可用的目前專案原型,並透過以下方式建立您的第一個專案 請遵循下列簡單步驟.

使用原型的好處

AEM原型由模組組成:

  • 核心:此Java套件組合包含所有核心功能(例如OSGi服務、監聽器和排程器)以及與元件相關的Java程式碼(例如servlet和請求篩選器)。
  • it.tests:是以Java為基礎的整合測試。
  • ui.apps:包含 /apps/etc 專案的一部分,即JS和CSS clientlibs、元件和範本。
  • ui.content:包含使用ui.apps模組元件的範例內容。
  • ui.config:包含專案的執行模式特定OSGi設定。
  • ui.frontend.general(選擇性) 包含使用一般Webpack型前端建置模組所需的成品。
  • ui.frontend.react(選擇性) 包含使用原型建立根據React的SPA專案時所需的成品。
  • ui.frontend.angular(選擇性) 包含使用原型根據Angular建立SPA專案時所需的成品。
  • ui.tests:包含以Selenium為基礎的UI測試。
  • 全部:是單一內容套件,內嵌所有已編譯模組(套件組合和內容套件),包括任何廠商相依性。
  • 分析:對專案執行分析,這為部署到AEMas a Cloud Service提供額外的驗證。

Maven中表示的AEM原型模組會部署到AEM,作為代表應用程式、內容和必要OSGi套裝的內容套件。

如何使用原型

若要使用原型,您首先需要建立專案,專案會在本機檔案結構中產生模組,如下所示 先前說明. 作為專案產生的一部分,您可以定義專案的一些屬性,例如專案名稱、版本等。

使用Maven建立專案會建立可部署至AEM的成品(套件和OSGi套件組合)。 其他Maven命令和設定檔可用於將專案成品部署到AEM執行個體。

建立專案

若要開始使用,您只需使用 AEM Eclipse擴充功能 並依照「新增專案」精靈的指示進行,然後選擇 AEM範例多模組專案 以使用原型的發行版本。

當然,您也可以直接叫用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專案原型的。
  • 設定 aemVersion=cloudAEMas a Cloud Service
    設定 aemVersion=6.5.0Adobe Managed Services或內部部署。
    僅針對非雲端AEM版本新增核心元件相依性,因為核心元件是針對AEMas a Cloud Service提供的OOTB。
  • 調整 appTitle="My Site" 以定義網站標題和元件群組。
  • 調整 appId="mysite" 以定義Maven artifactId、元件、設定和內容資料夾名稱以及使用者端資料庫名稱。
  • 調整 groupId="com.mysite" 以定義Maven groupId和Java來源套件。
  • 查詢可用屬性清單,檢視是否有更多要調整的內容。
注意

最佳實務是新增 adobe-public 您的Maven設定檔 settings.xml 以自動新增repo.adobe.com至maven建置流程。

範例POM 可在此處找到.

屬性

使用原型建立專案時,可以使用以下屬性。

名稱 預設 說明
appTitle 應用程式標題,將用於網站標題和元件群組(例如 "My Site")。
appId 技術名稱,將用於元件、設定和內容資料夾名稱,以及使用者端資料庫名稱(例如 "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版本(可以是 cloudAEMas a Cloud Service;或 6.5.0,或 6.4.4Adobe Managed Services 或內部部署)。
sdkVersion latest 時間 aemVersion=cloud 一個 SDK 可以指定版本(例如 2020.02.2265.20200217T222518Z-200130)。
includeDispatcherConfig y 包含雲端或AMS/內部部署的Dispatcher設定,具體取決於的值 aemVersion (可以是 yn)。
frontendModule general 包含產生使用者端程式庫的Webpack前端組建模組(可以 generalnone 用於一般網站;可以是 angularreact 實作的單頁應用程式 SPA編輯器)。
language en 從中建立內容結構的語言代碼(ISO 639-1) (例如: endeu)。
country us 從中建立內容結構的國家/地區代碼(ISO 3166-1) (例如: US)。
singleCountry y 包含語言主要內容結構(可以 y,或 n)。
includeExamples n 包含 元件資料庫 網站範例(可以是 y,或 n)。
includeErrorHandler n 包含自訂404回應頁面,此頁面將為整個執行個體的全域頁面(可以 yn)。
includeCommerce n 包含 CIF Core Components 相依性並產生對應的成品。
commerceEndpoint 僅適用於CIF。 要使用的商務系統GraphQL服務的選用端點(例如 https://hostname.com/grapql)。
datalayer y 啟用與的整合 Adobe使用者端資料層.
amp n 啟用 AMP 支援產生的專案範本。
enableDynamicMedia n 在專案原則設定中啟用基礎DynamicMedia元件,並在核心影像元件原則中啟用Dynamic Media功能。
enableSSR n 為前端專案啟用SSR的選項
precompiledScripts n 選項至 預先編譯 來自的伺服器端指令碼 ui.apps 並將它們附加至組建作為中的次要套件成品 ui.apps 專案。 aemVersion 應設為 cloud.
注意

如果第一次在互動模式中執行原型,則無法變更具有預設值的屬性(請參閱 ARCHETYPE-308 以取得詳細資訊)。 當最後的屬性確認被拒絕且調查表重複時,或在命令列中傳遞引數時(例如, -DoptionIncludeExamples=n)。

注意

在Windows上執行並產生Dispatcher設定時,您應該在提升許可權的命令提示字元或Linux適用的Windows子系統中執行(請參閱 第329期)。

設定檔

產生的maven專案在執行時支援不同的部署設定檔 mvn install.

設定檔ID 說明
autoInstallBundle 將包含maven-sling-plugin的核心套件組合安裝至felix主控台
autoInstallPackage 將包含content-package-maven-plugin的ui.content和ui.apps內容套件安裝到套件管理員上的localhost預設作者執行個體(連線埠4502)。 可使用變更主機名稱和連線埠 aem.hostaem.port 使用者定義的屬性。
autoInstallPackagePublish 將含有content-package-maven-plugin的ui.content和ui.apps內容套件安裝到套件管理員上,以預設發佈執行個體(本機主機上,連線埠4503)。 可使用變更主機名稱和連線埠 aem.hostaem.port 使用者定義的屬性。
autoInstallSinglePackage 安裝 all 將包含content-package-maven-plugin的內容套件透過套件管理器傳送至localhost上的預設作者執行個體(連線埠4502)。 可使用變更主機名稱和連線埠 aem.hostaem.port 使用者定義的屬性。
autoInstallSinglePackagePublish 安裝 all 將具有content-package-maven-plugin的內容套件透過套件管理器安裝至localhost上的預設發佈執行個體(連線埠4503)。 可使用變更主機名稱和連線埠 aem.hostaem.port 使用者定義的屬性。
integrationTests 在AEM執行個體上執行提供的整合測試(僅針對 verify 階段)
precompiledScripts 使用產生專案時自動定義 precompiledScripts 屬性設定為 y. 設定檔預設為作用中,並在內部產生OSGi套件組合 ui.apps 使用預先編譯的指令碼,這些指令碼將包含在 all 內容封裝。 設定檔可透過以下方式停用 -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

父級POM

pom.xml 在專案的根目錄(<src-directory>/<project>/pom.xml)稱為父系POM,可驅動專案結構並管理專案的相依性和某些全域屬性。

全域專案屬性

<properties> 父項POM的區段會定義在AEM執行個體上部署專案所必需的幾個全域屬性,例如使用者名稱/密碼、主機名稱/連線埠等。

這些屬性會設定為部署至本機AEM執行個體,因為這是開發人員最常進行的建置。 請注意,有一些屬性要部署至作者執行個體以及發佈執行個體。 這也是認證設定為使用AEM執行個體進行驗證的地方。 使用預設的admin:admin認證。

這些屬性的設定方式讓您可以在部署至較高層級環境時覆寫這些屬性。 如此一來,POM檔案就不需要變更,但是變數 aem.hostsling.password 可透過命令列引數覆寫:

mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd

模組結構

<modules> 父項POM的區段會定義專案將建置的模組。 依預設,專案會建置 先前定義的標準模組:core、ui.apps、ui.content、ui.tests和it.launcher。 隨著專案的發展,隨時可以新增更多模組。

相依性

<dependencyManagement> 上層POM的區段會定義專案中使用的API的所有相依性和版本。 版本應在父級POM中進行管理。 core和ui.apps之類的子模組不應包含任何版本資訊。

Uber-Jar

主要相依性之一是 AEM Java API Jar. 這將包含所有AEM API,且只有一個AEM版本的相依性專案。

注意

最佳實務是更新uber-jar版本以符合AEM的目標版本。 例如,如果您計畫部署到AEM 6.4,您應該將uber-jar的版本更新為6.4.0。

核心元件

AEM專案原型當然會運用核心元件。

核心元件會以預設執行模式自動安裝在AEM中,並由範例WKND網站使用。 在 生產執行模式 (nosamplecontent)核心元件無法使用。

因此,若要在所有部署中運用核心元件,最佳實務就是將這些元件納入Maven專案。

注意

核心元件的每個版本通常都會緊接著發行AEM Project Archetype,讓最新原型使用最新版本的核心元件。

不過,原型的新版本可能不會直接緊隨核心元件的新版本,因此您可能希望將核心元件的相依性更新至最新版本。

注意

core.wcm.components.examples是一組範例頁面,說明核心元件的範例。 最佳實務是,在部署專案以供生產使用時,您應移除此相依性和子套件包含。

測試

專案中包含三個層級的測試,由於它們是不同型別的測試,因此會以不同方式或在不同位置執行。

  • 核心單元測試:這項測試會示範套件組合中包含之程式碼的典型單元測試。 若要測試,請執行:
    • mvn clean test
  • 伺服器端整合測試:這些會在AEM環境中(即在AEM伺服器上)執行單元測試。 若要測試,請執行:
    • mvn clean verify -PintegrationTests
  • 使用者端Hobbes.js測試:這些是驗證瀏覽器端行為的JavaScript瀏覽器端測試。 若要測試:
    1. 在瀏覽器中載入AEM,就像編寫頁面一樣。
    2. 在中開啟頁面 開發人員模式
    3. 開啟左側面板並切換至 測試 標籤。
    4. 尋找產生的 MyName測試 並執行它們。

後續步驟

因此您已建置並安裝AEM專案原型。 現在該做什麼? 雖然原型很小,但包含許多根據建議的最佳實務設定的強大AEM功能範例。 這些範本可指示您如何在專案中利用這些功能。 對於任何專案,您可能需要:

本頁內容