在 Eclipse 中使用 Bundlor

工程 | Christian Dupuis | 2009 年 3 月 26 日 | ...

在之前的部落格中,Ben 介紹了 Bundlor,其背後的概念,以及如何從命令列、ANT 和 Maven 中使用它。 在這篇文章中,我將展示如何在 Eclipse 環境中使用 Bundlor。

在開發基於 OSGi 的應用程式時,有些使用者不希望花時間不斷更新他們的MANIFEST.MF,而是希望專注於應用程式組件中的實際業務邏輯:在這種情況下,Bundlor Eclipse 整合將確保MANIFEST.MF檔案反映專案中程式碼構件表達的實際依賴關係,並消除在 Eclipse 中手動管理類別路徑設定的需要。 此外,BundlorEclipse 可以透過在 Eclipse 中引入僅測試來源資料夾和第二個名為TEST.MF的 manifest 檔案來指定單元測試類別的依賴關係,從而幫助乾淨地分離運行時依賴關係和測試依賴關係。

背景

如果 Bundlor 在 Eclipse 中運行,它將使用基於使用 Eclipse JDT 建立的抽象語法樹的原始程式碼掃描來處理 Java 原始程式碼檔案。 這允許 Bundlor 在沒有現有專案類別路徑的情況下以及從非編譯、部分 Java 程式碼建立 manifest 檔案。 此外,Bundlor 支援的所有其他資源(目前為 Spring 組態檔案、Hibernate 和 JPA 映射檔案)也會在 Eclipse 中處理。

在 Eclipse 內部使用時,Bundlor 支援 manifest 檔案的增量建立和更新。 這在開發過程中非常有用,因為只有一組原始程式碼構件發生了更改。 然後,Bundlor 將僅更新屬於已更改資源的那些標頭值,而不是重新處理整個專案。

如果您不希望 Bundlor 在背景運行以自動更新資源更改上的 manifest,或者您希望更好地控制何時應更新 manifest,則 Eclipse 整合提供了一個按需啟動 Bundlor 的動作。

除了生成主要的MANIFEST.MF之外,BundlorEclipse 還能夠為純粹的測試依賴關係建立一個TEST.MF。 為了支持這一點,Eclipse Java 專案中的原始碼資料夾可以被標記為僅測試。 然後,Bundlor 將處理這些僅測試資料夾,並將檢測到的依賴關係添加到TEST.MF.

用法

BundlorEclipse 可用於具有SpringSource OSGi Bundle 專案性質的任何 Eclipse Java 專案。 請注意,這不需要使用Bundle Classpath Container

要測試 Bundlor,您可以透過新增 Bundle 專案精靈建立一個新專案。 該精靈將確保滿足運行 Bundlor 的所有先決條件。 如果您想在現有專案上使用或測試 Bundlor,請執行以下步驟

  • 確保專案具有SpringSource OSGi Bundle 專案性質。 要啟用該性質,請顯示專案的上下文選單,然後選擇:Spring Tools -> 新增 OSGi Bundle 專案性質

    add-osgi-bundle-nature-thumbs

  • 可選地,在專案的屬性對話方塊中定義僅測試來源資料夾。 在專案上開啟上下文選單,然後選擇屬性 -> Spring -> Java 測試資料夾

    java-test-folders-thumb

  • 可選地,檢查您是否在專案的根目錄中擁有一個名為template.mf的 Bundlor 範本
  • 從專案的上下文選單觸發 Bundlor manifest 生成過程:選擇Spring Tools -> 執行 MANIFEST.MF 檔案的生成。 或者,透過從上下文選單中使用啟用 MANIFEST.MF 檔案的增量生成來啟用增量 manifest 生成。

    run-manifest-generation-thumb

相同的動作也可以從 dm Server Tools 隨附的 manifest 編輯器的概觀頁面中取得。

BundlorEclipse 可以與 dm Server Tools 中的 Bundle Classpath Container 一起使用。 可以從任何 OSGi bundle 專案的上下文選單啟用和停用類別路徑容器。 在此設定中,當MANIFEST.MFTEST.MF檔案被 Bundlor 更改時,容器將自動更新類別路徑。 典型的開發人員工作流程如下所示

  1. 開發人員更改 Java 原始碼檔案或 Spring 組態並新增新的依賴關係(我們將很快為 Java 和 Spring XML 提供儲存庫驅動的內容輔助,以使新增新依賴關係更容易)
  2. 開發人員儲存已更改的資源
  3. BundlorEclipse - 在增量模式下 - 自動檢測這些更改並處理已更改的資源
  4. BundlorEclipse 更新MANIFEST.MFTEST.MF以反映開發人員引入的新依賴關係
  5. Bundle Classpath Container 更新類別路徑,因為對MANIFEST.MFTEST.MF發生了更改
  6. Java 原始碼將使用類別路徑上的新依賴關係自動重新編譯;Spring 組態檔案將被重新驗證

只有在從原始程式碼構件新增或移除依賴關係,或原始程式碼構件本身已被移除/移動時,才會執行步驟 4 到 6。

當然,BundlorEclipse 可以與任何其他類別路徑容器(例如 Maven Classpath Container)一起使用:如果您想使用 Maven 外掛程式(例如 m2eclipse 或 Q4E),您可以移除Bundle Classpath Container (Spring Tools -> 停用 Bundle Classpath Container) 並啟用對專案的 Maven 支援。 在這種 Artifact-First 方法中,Bundlor 將僅管理MANIFEST.MF;類別路徑將由 Maven 外掛程式控制。

請注意,在此階段,Bundlor 在檢測到的依賴關係之間沒有任何同步功能,MANIFEST.MF和一個pom.xml:Bundlor 不會自動將檢測到的依賴關係新增至pom.xml。 這在產品待辦事項清單上,並且很可能會在以後的版本中解決。

安裝

BundlorEclipse 可作為 dm Server Tools 1.1.3.M1 的一部分提供,該工具已根據 Eclipse Public License v1.0 授權。 您可以從我們的整合更新站點安裝 dm Server Tools,網址為

http://www.springsource.org/update/e3.4

如果您遇到任何問題,請隨時在 Bundlor 專案中開啟 JIRA。 由於 Bundlor 和 BundlorEclipse 都是新產品,我們很樂意在我們的 dm Server Tools社群論壇上討論這些產品。

獲取 Spring 電子報

與 Spring 電子報保持聯繫

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

獲取支持

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二進位檔案。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部