設定本機AEM開發環境
為AEM Adobe Experience Manager設定本機開發的指南。 涵蓋本機安裝、Apache Maven、整合式開發環境和偵錯/疑難排解等重要主題。 討論使用 Eclipse IDE、CRXDE Lite、Visual Studio Code和IntelliJ 進行開發。
概觀
設定本機開發環境是針對Adobe Experience Manager或AEM進行開發時的第一個步驟。 請花點時間設定高品質的開發環境,以提升生產力並更快撰寫更出色的程式碼。 我們可以將AEM本機開發環境分成四個區域:
- 本機AEM執行個體
- Apache Maven專案
- 整合式開發環境(IDE)
- 疑難排解
安裝本機AEM執行個體
當我們提及本機AEM執行個體時,我們談論的是在開發人員個人電腦上執行的Adobe Experience Manager復本。 所有 AEM開發應該從撰寫和執行本機AEM執行個體的程式碼開始。
如果您是AEM的新手,可以安裝兩種基本執行模式: 作者 和 Publish。 作者 執行模式是數位行銷人員用來建立和管理內容的環境。 大部分開發期間,您都是將程式碼部署到Author例項。 這可讓您建立頁面以及新增和設定元件。 AEM Sites是WYSIWYG製作CMS,因此,大部分CSS和JavaScript都可透過製作例項進行測試。
它也是針對本機 Publish 執行個體的 關鍵 測試程式碼。 Publish 執行個體是您網站的訪客與之互動的AEM環境。 雖然 Publish 執行個體與 Author 執行個體是相同的技術棧疊,但在設定和許可權方面有一些重大差異。 程式碼必須在本機 Publish 執行個體上測試,才能升級至較高層級的環境。
步驟
-
確認已安裝Java™。
- 偏好使用AEM 6.5+適用的Java™ JDK 11
- 適用於AEM 6.5之前的AEM版本的Java™ JDK 8
-
在電腦上建立檔案夾結構,如下所示:
~/aem-sdk
/author
/publish
-
將QuickStart JAR重新命名為 aem-author-p4502.jar,並將其放在
/author
目錄下。 在/author
目錄下新增 license.properties 檔案。 -
複製QuickStart JAR,將其重新命名為 aem-publish-p4503.jar,並放置在
/publish
目錄下。 在/publish
目錄下新增 license.properties 檔案的復本。
~/aem-sdk
/author
+ aem-author-p4502.jar
+ license.properties
/publish
+ aem-publish-p4503.jar
+ license.properties
- 連按兩下 aem-author-p4502.jar 檔案以安裝 Author 執行個體。 這會啟動編寫執行個體,在本機電腦的連線埠 4502 上執行。
連按兩下 aem-publish-p4503.jar 檔案以安裝 Publish 執行個體。 這會啟動Publish執行個體,在本機電腦的連線埠 4503 上執行。
使用命令列
連按兩下JAR檔案的替代方案是從命令列啟動AEM或建立指令碼(.bat
或.sh
),視您的本機作業系統風格而定。 以下是範例指令的範例:
$ java -Xmx2048M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=30303 -jar aem-author-p4502.jar -gui -r"author,localdev"
這裡,-X
是JVM選項,-D
是額外的架構屬性,如需詳細資訊,請參閱部署和維護AEM執行個體和快速入門檔案中提供的其他選項。
安裝Apache Maven
Apache Maven 是用來管理Java型專案的建置和部署程式的工具。 AEM是以Java為基礎的平台,Maven是管理AEM專案程式碼的標準方式。 當我們說 AEM Maven專案 或只是您的 AEM專案 時,我們指的是一個包含您網站所有 自訂 程式碼的Maven專案。
所有AEM專案應該以 AEM Project Archetype 的最新版本建置: https://github.com/adobe/aem-project-archetype。 AEM Project Archetype提供AEM專案的啟動程式,其中包含一些範常式式碼和內容。 AEM Project Archetype也包含設定為在專案中使用的 AEM WCM Core Components。
步驟
- 下載Apache Maven
- 安裝Apache Maven,並確定已將安裝新增至命令列
PATH
。- macOS使用者可以使用Homebrew安裝Maven
- 透過開啟新的命令列終端機並執行下列動作,驗證是否已安裝 Maven:
$ mvn --version
Apache Maven 3.3.9
Maven home: /Library/apache-maven-3.3.9
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
adobe-public
Maven設定檔才能指向nexus.adobe.com
以下載AEM成品。 現在所有的AEM成品都可以透過Maven Central使用,而不需要adobe-public
設定檔。設定整合式開發環境
整合式開發環境或IDE是一種結合文字編輯器、語法支援和建置工具的應用程式。 根據您正在執行的開發型別,一個IDE可能比另一個IDE更適合。 不論IDE為何,請務必定期 推送 程式碼至本機AEM執行個體以進行測試。 請務必不時從本機AEM執行個體將 提取 設定至您的AEM專案,以便保留至原始檔控制管理系統(例如Git)。
以下是一些與AEM開發搭配使用的較熱門IDE,以及顯示與本機AEM執行個體整合的對應影片。
classic
設定檔附加至任何Maven命令。$ mvn clean install -PautoInstallSinglePackage -Pclassic
使用IDE時,請務必在Maven設定檔標籤中檢視classic
。
IntelliJ Maven設定檔
Eclipse IDE
Eclipse IDE 是Java™開發中最常用的IDE之一,大部分是因為它是開放原始碼且 可用! Adobe為Eclipse提供外掛程式 AEM Developer Tools,以便能夠更輕鬆地使用良好的GUI進行開發,以將程式碼與本機AEM執行個體同步。 Eclipse IDE建議新加入AEM的開發人員使用,主要是因為AEM Developer Tools支援GUI。
安裝及設定
- 下載並安裝Java™ EE Developers的Eclipse IDE: https://www.eclipse.org
- 依照指示安裝AEM Developer Tools外掛程式: https://experienceleague.adobe.com/docs/experience-manager-65/developing/devtools/aem-eclipse.html?lang=zh-Hant
- 00:30 — 匯入Maven專案
- 01:24 — 使用Maven建置和部署原始程式碼
- 04:33 — 使用AEM開發人員工具推送程式碼變更
- 10:55 — 使用AEM開發人員工具提取程式碼變更
- 13:12 — 使用Eclipse的整合式偵錯工具
IntelliJ IDEA
IntelliJ IDEA 是適用於專業Java™開發的強大IDE。 IntelliJ IDEA有兩種口味:免費 Community版本和商業(付費) Ultimate版本。 可用的Community版本IntellIJ IDEA足以進行更多AEM開發,但Ultimate 擴充其功能集。
Installation and Setup
- 下載並安裝IntelliJ IDEA: https://www.jetbrains.com/idea/download
- 安裝Repo (命令列工具): https://github.com/Adobe-Marketing-Cloud/tools/tree/master/repo
- 00:00 — 匯入Maven專案
- 05:47 — 使用Maven建置和部署原始程式碼
- 08:17 — 使用存放庫推送變更
- 14:39 — 使用存放庫提取變更
- 17:25 — 使用IntelliJ IDEA的整合式偵錯工具
Visual Studio Code
Visual Studio Code 已迅速成為 前端開發人員 最喜愛的工具,具有增強的JavaScript支援、Intellisense和瀏覽器偵錯支援。 Visual Studio Code 是開放原始碼、免費、有許多強大的擴充功能。 Visual Studio Code可設定為在Adobe工具 repo的協助下與AEM整合。 也有數個社群支援的擴充功能可安裝成與AEM整合。
對於主要撰寫CSS/LESS和JavaScript程式碼以建立AEM使用者端程式庫的前端開發人員而言,Visual Studio Code是很好的選擇。 此工具可能不是新AEM開發人員的最佳選擇,因為節點定義(對話方塊、元件)需要以原始XML編輯。 有數個Java™擴充功能可用於Visual Studio Code,但如果主要執行Java™開發Eclipse IDE或IntelliJ,可能較偏好使用。
重要連結
- 00:30 — 匯入Maven專案
- 00:53 — 使用Maven建置和部署原始程式碼
- 04:03 — 使用存放庫命令列工具推送程式碼變更
- 08:29 — 使用存放庫命令列工具變更提取程式碼
- 10:40 — 使用嵌入式工具推送程式碼變更
- 14:24 — 疑難排解,重建使用者端程式庫
CRXDE Lite
CRXDE Lite是AEM存放庫的瀏覽器檢視。 CRXDE Lite內嵌於AEM中,可讓開發人員執行標準開發工作,例如編輯檔案、定義元件、對話方塊和範本。 CRXDE Lite是 不是 打算做為完整開發環境,但做為偵錯工具卻很有效。 CRXDE Lite在延伸或只是瞭解程式碼基底以外的產品程式碼時很有用。 CRXDE Lite提供存放庫的強大檢視,以及有效測試和管理許可權的方法。
CRXDE Lite應該與其他IDE搭配使用以測試和偵錯程式碼,但絕不可作為主要開發工具。 其語法支援有限,沒有自動完成功能,而且與原始檔控制管理系統的整合也有限。
疑難排解
說明! 我的程式碼無法運作! 就像所有開發一樣,有時候(可能很多)您的程式碼無法如預期運作。 AEM是一個功能強大的平台,但功能強大……帶來極大的複雜性。 以下是疑難排解及追蹤問題時的幾個高階起點(遠非可能錯誤的完整清單):
驗證程式碼部署
遇到問題時,正確的第一步是驗證程式碼是否已成功部署並安裝到AEM。
- 檢查封裝管理員,確認是否已上傳及安裝程式碼封裝: http://localhost:4502/crx/packmgr/index.jsp。 檢查時間戳記,確認最近是否安裝了套件。
- 如果使用Repo或AEM Developer Tools之類的工具進行增量檔案更新,請檢查CRXDE Lite 檔案是否已推送至本機AEM執行個體,且檔案內容已更新: http://localhost:4502/crx/de/index.jsp
- 如果看到與OSGi套件中的Java™程式碼相關的問題,請檢查套件是否已上傳。 開啟Adobe Experience Manager Web Console: http://localhost:4502/system/console/bundles並搜尋您的套件。 確定組合具有 作用中 狀態。 請參閱下文,以取得疑難排解 已安裝 狀態的套件組合的相關詳細資訊。
檢查記錄
AEM是一個聊天平台,並將有用的資訊記錄在 error.log 中。 在AEM的安裝位置可以找到 error.log: < aem-installation-folder>/crx-quickstart/logs/error.log
。
追蹤問題的實用技術是在Java™程式碼中新增記錄陳述式:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
public class MyClass {
private final Logger log = LoggerFactory.getLogger(getClass());
...
String myVariable = "My Variable";
log.debug("Debug statement of myVariable {}", myVariable);
log.info("Info statement of myVariable {}", myVariable);
}
根據預設,error.log 設定為記錄 INFO 陳述式。 如果您想要變更記錄層級,可以移至記錄支援: http://localhost:4502/system/console/slinglog。 您也可能發現 error.log 太常聊。 您可以使用Log Support,為指定的Java™封裝設定記錄陳述式。 這是專案的最佳實務,以便輕鬆地將自訂程式碼問題與OOTB AEM平台問題分開。
套件組合處於已安裝狀態 bundle-active
所有組合(不包括片段)都應處於 作用中 狀態。 如果您看到程式碼套件組合處於已安裝狀態,表示有問題需要解決。 大多數時候這會是相依性問題:
AEM 中的套件組合錯誤
在上述熒幕擷圖中,WKND Core bundle是已安裝狀態。 這是因為套件組合預期的com.adobe.cq.wcm.core.components.models
版本與AEM執行個體上可用的版本不同。
可用的實用工具是相依性尋找器: http://localhost:4502/system/console/depfinder。 新增Java™套件名稱以檢查AEM執行個體上可用的版本:
繼續上述範例,我們可以看到,安裝在AEM執行個體上的版本是 12.2 vs 12.6,也就是組合所預期的版本。 從那裡,您可以回溯工作,檢視AEM上的Maven相依性是否符合AEM專案中的Maven相依性。 在中,上述範例Core Components v2.2.0 已安裝在AEM執行個體上,但程式碼套件組合是在 v2.2.2 上建立相依性的,因此這是相依性問題的原因。
驗證Sling模型註冊 osgi-component-sling-models
AEM元件必須由Sling Model提供支援,以封裝任何商業邏輯並確保HTL轉譯指令碼保持整齊。 如果發生找不到Sling模型的問題,則從主控台http://localhost:4502/system/console/status-slingmodels檢視Sling Models會很有幫助。 這會告訴您是否已註冊Sling模型,以及它繫結的資源型別(元件路徑)。
顯示繫結至元件資源型別wknd/components/content/byline
的Sling Model、BylineImpl
的登入。
CSS或JavaScript問題
針對大多數CSS和JavaScript問題,使用瀏覽器的開發工具是進行疑難排解的最有效方式。 若要在針對AEM編寫執行個體進行開發時縮小問題範圍,檢視「已發佈」頁面會很有幫助。
開啟頁面屬性功能表,然後按一下以發佈的形式檢視。 這會在沒有AEM編輯器且查詢引數設定為 wcmmode=disabled 的情況下開啟頁面。 這有效地停用了AEM編寫UI,並使疑難排解/偵錯前端問題變得更加容易。
開發前端程式碼時另一個常見問題為過時或正在載入過期的CSS/JS。 首先,請確定瀏覽器歷史記錄已清除,並視需要啟動無痕瀏覽器或全新工作階段。
偵錯使用者端程式庫
使用不同的類別和內嵌方法來包含多個使用者端程式庫,進行疑難排解可能會相當麻煩。 AEM公開了幾個工具來幫助解決此問題。 最重要的工具之一是重建使用者端資料庫,它會強制AEM重新編譯任何LESS檔案並產生CSS。
- 傾印程式庫 — 列出在AEM執行個體中註冊的所有使用者端程式庫。 <host>/libs/granite/ui/content/dumplibs.html
- 測試輸出 — 允許使用者根據類別檢視clientlib includes的預期HTML輸出。 <host>/libs/granite/ui/content/dumplibs.test.html
- 資料庫相依性驗證 — 反白標示找不到的任何相依性或內嵌類別。 <host>/libs/granite/ui/content/dumplibs.validate.html
- 重新建置使用者端資料庫 — 允許使用者強制AEM重新建置所有使用者端資料庫,或是讓使用者端資料庫的快取失效。 使用LESS開發時,此工具相當有效,因為這會強制AEM重新編譯產生的CSS。 一般而言,讓快取失效,然後執行頁面重新整理比重建所有程式庫更有效率。 <host>/libs/granite/ui/content/dumplibs.rebuild.html