Alfresco Maven SDK 入門
Jeff Potts,2014 年 1 月, 第 2 部分 =>- 介紹
- 基本概念
- 阿帕契Maven
- 露天模組化套件(AMP)
- 露天 Maven SDK
- 您對舊的基於 Ant 的 SDK 有何看法?
- 你的第一個項目
- 讓我們啟動它
- 它以前如何?
- 其他建置命令
- 記錄
介紹
本教學是為需要以某種方式在專案上配置 Alfresco 的人創建的。所以一開始你會想:“這是什麼?!” 但最終你會學到:
- 如何使用 Alfresco Maven SDK 從頭開始建立 Alfresco 項目
- 根據您的設定會發生什麼
- 如何建立和運行測試
- 如何建立適合嵌入或與社群分享的工件
在您繼續更詳細地學習內容建模、自訂操作和行為、其他工作流程或 Web 腳本等內容之前,應將本教學視為起點。
在我們開始之前,先說一句題外話:解決方案幾乎總是有許多替代路徑。在本教程中我將帶您以最簡單直接的方式,一條安全的路線,幫助您更快地弄清楚。稍後您可以根據需要更改一些內容或探索其他路線。
基本概念。
在開始使用之前,您不需要了解太多有關 Maven、Alfresco 或為什麼需要這個 SDK 的知識,但一些知識可以在某些方面提供幫助,所以讓我快速帶您了解基本概念。
阿帕契Maven
Apache Maven 是一個建置管理工具。它有很多功能,但最主要的功能是它可以節省確定專案所依賴的依賴項(以及依賴項的依賴項)的時間。Maven 可以為您檢索並快取這些依賴項。如果您曾經花時間嘗試找出哪個 JAR 檔案在哪個 JAR 檔案之後,那麼這種工具的用處是顯而易見的。
露天模組化套件(AMP)
AMP 是一個 ZIP 文件,其目錄結構遵循一定的約定。AMP 檔案用於在 Alfresco 平台上輕鬆共用和部署設定。如果您的專案需要在儲存庫層級(網路應用程式/露天)建立自訂設置,則您可以建立 AMP「儲存庫」。如果您的專案需要在共用層級(網頁應用程式/共用)建立設置,您可以建立一個「共用」AMP。對於一個專案來說,當兩個層級都需要更改時,您會建立兩個 AMP,這是非常典型的情況。
露天 Maven SDK
今天的程式設計師已經習慣了強大的框架,其中一個空目錄在一分鐘內就被檔案完全填滿,下一刻您的專案就可以啟動了。為什麼露天開發商應該滿足於更少的需求?
基於 Maven 的 SDK 的目標是為 Alfresco 的開發創造最簡單的條件。這個 SDK 由專案範本(Maven 術語中的「原型」)和一些內建功能組成,這些功能告訴 Maven 如何建立 AMP 並將其部署到 Alfresco。
如果您與 Alfresco 和 Share WAR 分開編寫自己的應用程序,則不需要 Alfresco Maven SDK。但如果您要編寫在任何這些 Web 應用程式中執行的程式碼,Alfresco Maven SDK 就是起點。
舊的基於 Ant 的 SDK 怎麼樣?
Alfresco 從一開始就提供了這個可下載的 SDK。SDK 包含一個 ZIP 容器,其中包含編譯、原始碼、文件和範例 Eclipse 專案所需的依賴項。這些範例使用基於 Ant 的建構器。
這種方法並沒有什麼問題,但是開發平台已經發展,而 Ant 的 SDK 卻未能隨之發展。截至目前,這些範例的部分內容已經過時(例如,本機 Web 服務 API 或 Alfresco Explorer 使用者介面),並且對於極其重要的部分(例如 CMIS、Web 腳本和使用 Activiti 的高級工作流程)沒有足夠的範例。
除了過時的範例之外,還需要舊的 Ant SDK。開發人員做了太多的工作。使用 Alfresco Maven SDK,您甚至無需下載任何內容 - 您只需建立專案並開始編碼即可。
您現在對 Apache Maven、AMP 和 Alfresco Maven SDK 有了較高的了解。是時候看看這一切的實際效果了
你的第一個項目
讓我向您展示使用 Alfresco Maven SDK 開始進行 Alfresco 開發是多麼容易。在開始之前,我必須提醒你已經安裝了 JDK 1.7,以及 Apache Maven 3,你不需要下載任何其他東西。嚴重地。甚至露天。
- 建立一個空目錄。我們很快就會在其中創建一些額外的目錄。
- 現在讓我們建立一個空專案。假設您想要建立一些將部署到 Alfresco 儲存庫的內容,例如自訂內容模型、多個自訂規則操作、一組新的 Web 腳本或某些 Activiti 業務流程。這真的沒關係。若要建立新項目,請執行命令:
mvn 原型:生成\ -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml\ -Dfilter=org.alfresco.maven.archetype:
- Maven 會做一些工作並最終要求你選擇「archetype」。您從專案範本庫中的基本選擇。這裡有兩個可用。一種稱為“alfresco-amp-archetype”,另一種稱為“alfresco-allinone-archetype”。我們的目標是創造一個可以部署在Alfresco的AMP,所以第一點就是我們所需要的。輸入 1 並按 Enter 鍵。
- Maven 現在要求您提供專案所基於的範本的特定版本。目前,最新版本是 1.1.1,這是清單中的第五個選項,因此請按 5 並 Enter。
- Maven 詢問 groupId。它類似於“Java 包”。我的範例始終基於我在虛構公司 SomeCo 工作的事實,因此我將在此輸入「com.someco」。輸入您認為有意義的內容,然後按 Enter 鍵。
- 接下來是artifactId。將其視為您的項目的名稱。這也將成為您的 AMP ID,因此請選擇一些特殊的內容。您還應該將“-repo”行新增至您的artifactId,因為該模組將內建到儲存庫中。我將其命名為“someco-mvn-tutorial-repo”並按 Enter。
-
此時,Maven 將顯示您輸入的值,並添加一些其他預設值,並要求您確認您的選擇。如果您想更改任何內容,可以選擇“N”然後進行更改,或選擇“Y”繼續。如果需要,您可以稍後變更這些值。按“Y”,然後輸入。
Maven 現在將做一些工作。完成後您將得到以下資訊:
- 一個旨在支持您的 Alfresco 開發的項目
- 預設設定檔
- 用於額外單元測試的最少 Java 程式碼,以檢查一切是否正常
- 執行測試所需的本機 Alfresco 執行個體所需的配置
- 預設 POM(專案物件模型)XML 文件,告訴 Maven 您的專案有哪些依賴項
讓我們運行一下
您還沒有上傳任何內容。您還沒有編輯任何內容。您所做的只是告訴 Maven 根據模板建立一個項目,但我有個好消息:您的專案現在就可以運行了。
嘗試這個:
cd someco-mvn-教程-repo mvn 整合測試 -Pamp-to-war
如果查看輸出,您將看到 Maven 下載了編譯專案、建立 AMP、將 AMP 部署到 Alfresco WAR、將 Alfresco WAR 部署到嵌入式 Tomcat 伺服器並運行所需的所有內容。最終你會看到類似下面的內容:
2014-01-15 18:01:19,339 INFO [repo.module.ModuleServiceImpl] [localhost-startStop-1] 找到 1 個模組。 2014-01-15 18:01:19,480 訊息 [repo.module.ModuleServiceImpl] [localhost-startStop-1] 安裝模組「someco-mvn-tutorial-repo」版本 1.0.1401151758。
這意味著您的專案模組是由 Alfresco 伺服器產生並識別的。
看到後:
Jan 16, 2014 8:38:20 AM org.apache.coyote.AbstractProtocol 啟動資訊:啟動 ProtocolHandler ["http-bio-8080"]
您應該能夠打開:
http://localhost:8080/alfresco
並使用“admin”和“admin”登入。
欣賞完後,返回運行 Maven 命令的窗口,然後按 ctrl-c 關閉伺服器。
如果您在執行整合測試時遇到記憶體不足錯誤,您可能需要在 Maven 中輸入一些記憶體選項的 JVM 參數。一個可能的解決方案是設定 MAVEN_OPTS 環境變數。例如我將我的值設為:
-Xmx1024M -XX:MaxPermSize=512m
使用 MAVEN_OPTS 將其設定得足夠好,這樣您就不會看到記憶體溢出錯誤。
它以前如何?
您已要求 Maven 運行“integration-test”以使用“amp-to-war”設定檔。這導致建置該項目,將其作為 AMP 部署到新的 Alfresco WAR,並運行嵌入式 Tomcat 伺服器。之後,您可以登入舊的 Alfresco Explorer 用戶端並使用儲存庫,測試您的模組。
如果您查看目標目錄,您將看到已建立並隨後部署在 Alfresco WAR 中的 AMP。在我的例子中,它被稱為“someco-mvn-tutorial-repo.amp”。如果您準備好將儲存庫層級變更套用到即時 Alfresco 伺服器,則您應該向 IT 團隊提供此檔案。
其他建置命令
您可能不會總是需要啟動 Alfresco 伺服器並使其保持運作。如果您只想建立專案、執行單元測試並打包 AMP,您可以執行以下操作:
MVN包
如果您想在本機 Maven 儲存庫中安裝 AMP,請執行:
MVN安裝
您可能已經注意到,該項目預設包含一個簡單的單元測試。預設情況下,Maven 將自動在您的專案中執行單元測試。您可以在控制台輸出中看到這一點:
-------------------------------------------------- ----- 測試 -------------------------------------------------- ----- 執行 org.alfresco.demoamp.test.DemoComponentTest
確保您的專案始終包含單元測試並在每次建置時運行它們是一個很好的做法。許多組織使用依賴這些測試的 CI(持續整合)工具。如果你因為某些原因不想執行測試,你可以跳過它,如下所示:
mvn install -DskipTests=true
如果您想要刪除 Maven 建立的所有已編譯內容並重新開始,您可以執行:
mvn 乾淨
如果您還想刪除執行伺服器測試時始終建立的內建資料庫、已儲存的 Alfresco 內容、索引和日誌,您可以執行:
mvn clean-清除
現在您知道如何使用範本建立新的 Alfresco 項目,並掌握了帶有測試或不含測試的建置基礎知識。下一步是學習如何在 IDE 中處理您的專案。
記錄
log4j.properties檔案位於modules目錄下,log4j.properties檔案包含
log4j.logger.org.alfresco.demoamp.DemoComponent=${module.log.level}
您可能希望將其替換為適合您的包結構的您自己的設定。
若要設定 module.log.level,您可以在啟動 Maven 時執行此操作,如下所示:
mvn install -Dmodule.log.level=DEBUG
或者您可以編輯 pom.xml 並將其新增至屬性中,如下所示:
<module.log.level>調試</module.log.level>
如果更改 pom.xml,那麼 AMP 將在創建時接收這些設置,隨後部署 AMP 的 WAR 將寫入日誌。這可能是(也可能不是)您想要的。如果您不確定,最好使用命令列設定值,因為這可以防止您意外弄亂 AMP 中的值。
本作品根據 Creative Commons Attribution-ShareAlike 3.0 Unported License授權。 第 2 部分 =>
GO TO FULL VERSION