RCP(Rich Client Platform)基於 Eclipse 插件架構,能快速構建富客戶端應用。但生產環境構建往往在無圖形界面的構建服務器上進行,無法使用 Eclipse UI 導出向導。Ant 作為 Java 原生構建工具,配合 Eclipse PDE Build 無頭模式,完美解決自動化打包部署需求。
ANT_HOME 與 PATH,驗證 ant -version。HelloRCP。.product 文件定義產品依賴、啟動參數、圖標等。

兩文件協作:
build.xml:定義構建流程 Target 依賴鏈。build.properties:集中管理變量(路徑、版本、平台等),利於維護。
<project name="HelloRCP" default="start">
<property file="build.properties"/>
<!-- 入口:調用外部腳本 → 部署 -->
<target name="start">
<antcall target="external"/>
<antcall target="deploy"/>
</target>
<!-- 調用外部 Ant 腳本 -->
<target name="external">
<ant antfile="build.xml" dir="${external_build}"/>
</target>
<!-- 初始化:創建目錄、複製源碼到構建區 -->
<target name="init">
<mkdir dir="${buildDirectory}/plugins"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="../../"><include name="HelloRCP/**"/></fileset>
</copy>
</target>
<!-- 核心:調用 PDE Build 導出產品 -->
<target name="pde-build">
<java classname="org.eclipse.equinox.launcher.Main" fork="true" failonerror="true">
<arg value="-application"/><arg value="org.eclipse.ant.core.antRunner"/>
<arg value="-buildfile"/>
<arg value="${eclipseLocation}/plugins/org.eclipse.pde.build_${pdeBuildPluginVersion}/scripts/productBuild/productBuild.xml"/>
<arg value="-Dtimestamp=${timestamp}"/>
<classpath>
<pathelement location="${eclipseLocation}/plugins/org.eclipse.equinox.launcher_${equinoxLauncherPluginVersion}.jar"/>
</classpath>
</java>
</target>
<target name="build" depends="clean, init, pde-build"/>
<target name="deploy" depends="build"><!-- 配置文件合併等後處理 --></target>
<target name="clean"><delete dir="${buildDirectory}"/></target>
</project>
| Target | 職責 |
|---|---|
| start | 構建入口,類比 main() |
| external | 調用外部 Ant 腳本(注意相對路徑基準) |
| init | 準備構建目錄結構,滿足 PDE Build 期望 |
| pde-build | 啟動 Equinox Launcher 運行 PDE Build 產品導出 |
| build | 聚合 clean→init→pde-build |
| deploy | 後處理:合併配置、打包分發 |
| clean | 清理臨時文件 |
pdeBuildPluginVersion=3.8.0.v20120523-1555
equinoxLauncherPluginVersion=1.3.0.v20120522-1813
eclipseLocation=C:/eclipse-rcp-juno-win32-x86_64/eclipse
buildDirectory=C:/DW
configs=win32, win32, x86_64
buildId=hellorcp
baseLocation=${eclipseLocation}
baseos=win32
basews=win32
basearch=x86_64
archivePrefix=HelloRCP
collectingFolder=${archivePrefix}
runPackager=true
allowBinaryCycles=true
flattenDependencies=true
JavaSE-1.6=${java.home}/lib/rt.jar
logExtension=.log
javacSource=1.6
javacTarget=1.6
external_build=C:/external
重點:
configs 指定目標平台(如 linux, gtk, x86_64 可多平台並行構建)。pdeBuildPluginVersion/equinoxLauncherPluginVersion 必須與 Eclipse 安裝目錄 plugins/ 下實際 jar 版本一致。buildDirectory 為構建輸出根目錄。右鍵 build.xml → Run As → Ant Build,Console 查看輸出。
C:\workspace_rcp\HelloRCP\builds> ant
或封裝 Auto.bat:
call C:\Test\Ant\apache-ant-1.8.4\bin\ant.bat -file C:\workspace_rcp\HelloRCP\builds\build.xml
構建成功後,${buildDirectory} 下生成產品壓縮包,含可執行文件、插件、配置,可直接分發。
| 現象 | 原因與解決 |
|---|---|
| 找不到 application id | .product 文件 Overview → Product Definition 配置 Application ID |
| 缺少 tools.jar | 將 JDK lib/tools.jar 複製到報錯指向的 JRE 目錄 |
| 依賴包缺失 | .product → Dependencies 添加缺失插件 |
| 多平台構建 | 修改 configs=win32,win32,x86 & linux,gtk,x86_64 |
Ant + PDE Build 實現了 RCP 應用的完全無頭自動化構建:
掌握此模式,可輕鬆擴展至插件自動化測試、簽名、發布等後續環節。