經過一番設計,我的 Ant 建置腳本已能有效改善 NetBeans RCP 專案的建置方式。
我在上一篇部落格文章中提到,分發 NetBeans RCP 專案原始碼的好方法,應綁定所使用的建置平台(而非預設的 NetBeans 平台)。建議採用以下目錄佈局:
lib/nbm - 存放以 NBM 格式打包的參考平台lib/nbm/NetBeans6.0RC1 - 存放所需 NetBeans 平台的模組lib/platform7-base - 存放無法打包為 NBM 的某些檔案src/ - 原始碼另以 lib/platform 存放供 NetBeans 使用的平台佈局(不隨原始碼分發)。
以下 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>
若專案使用自訂平台,通常需先手動配置 IDE。將下列程式碼置於 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"/>
...
</project>
此程式碼會在手動配置的 IDE 中定義新平台(可能需重啟 IDE 套用變更)。使用者只需執行一次 ant generate-platform 即可開始使用。
OpenBlueSky 是我從 blueMarine 專案中拆解出的工具與元件集合,供其他應用程式使用。包含從 RCP API 簡單增強到如 CoverFlowView 這類先進元件(在 blueMarine 中表現優異):

使用方式簡單如 ListView(只需設定 Lookup 和 ExplorerManager)。不久將發布更多細節。OpenBlueSky 還將針對 SwingLabs 中的特色素材提供特定整合,讓構建功能豐富的 NetBeans 富用戶端應用程式更容易!