經過一番設計之後,我的 ant 工具已經很好用了,對 NetBeans RCP 項目的構建方式有了一點兒改進。
我在 上一篇博客文章 中提到,我認為分發 NetBeans RCP 項目源的好方法綁所使用的構建平台(當然,如果不是默認的 NetBeans 平台)。
我建議在分發中使用以下目錄布局:
lib/nbm - 用於存放以 nbm 文件形式打包的引用平台;
lib/nbm/NetBeans6.0RC1 - 用於存放需要使用的 NetBeans 平台的模塊;
lib/platform7-base - 用於存放 NetBeans 上無法打包為 nbm 文件的某些文件;
src/ - 源文件
將使用另一個目錄來保存平台布局,以供 NetBeans 使用(此目錄不應用源來分發)
lib/platform - 用於存放以 nbm 文件形式打包的引用平台
現在,下面的 ant 代碼就將使一勞永逸地生成該平台成為可能:
<property name="platform.dir" value="lib/platform" />
<property name="nbm.dir" value="lib/nbm" />
...
<target name="generate-platform">
<delete dir="${platform.dir}" failonerror="false" />
<mkdir dir="${platform.dir}" />
<copy todir="${platform.dir}/platform7">
<fileset dir="lib/platform7-base" />
</copy>
<generatePlatform platformTargetFolder="${platform.dir}" >
<fileset dir="${nbm.dir}"/>
<fileset dir="${nbm.dir}/NetBeans6.0RC1"/>
</generatePlatform>
</target>
情況可以進一步改善。 如果您的項目使用的是自定義平台,則正常情況下,人們應首先通過新平台來配置 NetBeans 以編譯文件。但是,如果將下面的代碼放在 ant 腳本的開頭,則可以自動為您完成所需的一切:
<project name="MyApplication" basedir="." default="build">
<description>...</description>
<property name="platform.dir" value="lib/platform" />
<property name="nbm.dir" value="lib/nbm" />
<property file="nbproject/platform.properties"/>
<property file="nbproject/private/platform-private.properties"/>
<propertyfile file="${user.properties.file}" comment="">
<entry key="nbplatform.${nbplatform.active}.harness.dir"
value="$${nbplatform.default.harness.dir}"/>
<entry key="nbplatform.${nbplatform.active}.label"
value="${nbplatform.active}"/>
<entry key="nbplatform.${nbplatform.active}.netbeans.dest.dir"
value="${basedir}/${platform.dir}"/>
</propertyfile>
<import file="nbproject/build-impl.xml"/>
...
基本上,此代碼將只在您手動配置的 IDE 中定義新平台(可能需要重新啟動 IDE 以應用所做更改)。
這意味著您可以分發項目,並且只需讓人們運行一次 ant generate-platform,然後他們就可以開始使用該平台了。在我知道如何自定義 ant 初始化任務之後,就可以通過只打開帶有 IDE 的項目(純 J2SE 項目)來工作。有關更多信息,請參見 OpenBlueSky 文檔。可以在 OpenBlueSky 中下載這些 ant 任務的源和初始二進制文件。
隨便提一下,OpenBlueSky 是什麼?正如幾天前我所預料的,它是我已從 blueMarine 中分解出來的工具和組件的集合,以供在其他應用程序中使用。其中有一些不同的東西,從對 RCP API 的簡單增強直到像此 CoverFlowView 一樣更為尖端的東西(此處在 blueMarine 中出類拔萃):
使用方法就像 ListView 一樣簡單(只需設置一個 Lookup 和一個 ExplorerManager 即可完成)。很快,我將發表有關這方面的更多詳細信息。
更普遍地說,OpenBlueSky 將針對 SwingLabs 中的一些具有個性的材料提供特定集成,從而能夠更加容易地構建 Filthy NetBeans 富客戶機應用程序!
待續。