JavaFX - 部署
我想已經寫到本教學係列的最後一部分了,應該教你如何部署(例如:打包和發布)AddressApp
第7部分的主題
- 使用e(fx)clipse本地包(Native Package)部署我們的JavaFX應用程序。
什麼是部署
部署是打包和發布軟件給用戶的過程。這是軟件開發的關鍵部分,因為它是第一次與使用我們軟件的用戶交流。
Java的廣告口號是編寫一次,到處運行,這說明Java語言的跨平台好處。理想情況下,這意味著我們Java應用可以運行在任何裝備有JVM的設備上。 在過去,安裝Java應用程序的用戶經驗不總是平滑的。如果用戶在係統中冇有要求的Java版本,它必須首先直接安裝它。這導致有些困難,例如,需要管理員權限,Java版本之間的兼容問題等等。 幸運的是,JavaFX提供新的部署選項稱為本地打包(也稱為自包含應用程序包)。一個本地包是一個包含你的應用代碼和平台指定的Java運行時的打包程序。 Oracle提供的官方JavaFx文檔包含一個所有JavaFX部署選項的擴展指南。 在本章節中,我們教你如何使用Eclipse和e(fx)clipse插件創建本地包。
創建本地包
目標是在用戶的計算機上單個目錄中創建一個自包含的應用程序。下麵是AddressApp應用看起來的樣子(在Windows上):
app
目錄包含我們的應用數據和runtime
目錄(包含平台相關的Java運行時)。
為了讓用戶更加舒適,我們也提供一個安裝器:
-
Windows下的
exe
文件安裝器 -
MacOS下的
dmg
(拖放)安裝器。
E(fx)clipse插件會幫助我們生成本地包和安裝器。
第1步 編輯build.fxbuild
E(fx)clipse使用build.fxbuild
文件生成一個被Ant編譯工具使用的文件。(如果你冇有一個build.fxbuid
文件,在Eclipse中創建一個新的Java FX項目,並且拷貝生成的文件過來。
-
從項目的根目錄下打開
build.fxbuild
。 -
填寫包含一個星號的字段。對於MacOS:在應用程序標題中不能使用空格,因為好像會產生問題。
-
在Windows下Packaging Format選擇
exe
,MacOS下選擇dmg
,Linux下選擇rpm
-
點擊
Generate ant build.xml only
的連接(在右邊可以找到)。 -
驗證是否創建一個新的
build
目錄和文件build.xml
第2步 添加安裝程序的圖標
我們希望安裝程序有一些好看的圖標:
- AddressApp.ico 安裝文件圖標
- AddressApp-setup-icon.bmp 安裝啟動畫麵圖標
- AddressApp.icns Mac安裝程序圖標
-
在
build
目錄下創建下麵的子目錄:-
build/package/windows
(隻用於Windows) -
build/package/macos
(隻用於macos)
-
-
拷貝上麵的相關圖標到這些目錄中,現在它應該看起來如下所示:
-
重要:圖標的名稱必須精確匹配
build.fxbuild
中指定的Application的標題名:-
YourAppTitle.ico
-
YourAppTitle-setup-icon.bmp
-
YourAppTitle.icns
-
第3步 添加資源
我們的resources
目錄不能自動拷貝。我們必須手動添加它到build目錄下:
-
在
build
目錄下創建下麵的子目錄:-
build/dist
-
-
拷貝
resources
目錄(包含我們應用的圖標)到build/dist
.
第4步 編輯build.xml包含圖標
E(fx)clipse生成的build/build.xml
文件(準備使用Ant執行)。我們的安裝器圖標和資源圖像不能正常工作。
當e(fx)clipse冇有告訴它包含其它資源,例如resources
目錄和上麵添加的安裝文件圖標時,我們必須手動編輯build.xml
文件。
打開build.xml
文件,找到路徑fxant
。添加一行到${basedir}
(將讓我們安裝器圖標可用)。
build.xml - 添加"basedir"
<path id="fxant"> <filelist> <file name="${java.home}\..\lib\ant-javafx.jar"/> <file name="${java.home}\lib\jfxrt.jar"/> <file name="${basedir}"/> </filelist> </path>
找到塊fx:resources id="appRes"
,文件的更下麵位置。為resources
添加一行:
build.xml - 添加"resources"
<fx:resources id="appRes"> <fx:fileset dir="dist" includes="AddressApp.jar"/> <fx:fileset dir="dist" includes="libs/*"/> <fx:fileset dir="dist" includes="resources/**"/> </fx:resources>
有時候,版本數不能添加到fx:application
中,使得安裝器總是缺省的版本1.0
(在注釋中很多人指出這個問題)。為了修複它,手動添加版本號(感謝Marc找到解決辦法)。 解決):
build.xml - 添加 "version"
<fx:application id="fxApplication" name="AddressApp" mainClass="ch.makery.address.MainApp" version="1.0" />
現在,我們已經能夠使用ant編譯運行build.xml
了。這將會生成一個可運行的項目jar文件。但是我們希望更進一步,創建一個很好的安裝器。
第5步(Windows) - Windows exe安裝器
使用Inno Setup,我們能為我們的應用程序創建一個單獨.exe
文件的Windows安裝器。生成的.exe
執行用戶級彆的安裝(無需管理員權限)。也創建一個快捷方式(菜單和桌麵)。
-
下載Inno Setup 5以後版本,安裝Inno程序到你的計算機上。我們的Ant腳本將使用它自動生成安裝器。
-
告訴Windows Inno程序的安裝路徑(例如:
C:\Program Files (x86)\Inno Setup 5)
。添加Inno安裝路徑到Path環境變量中。如果你不知道哪裡可以找到它,閱讀Windows中如何設置路徑和環境變量. -
重啟Eclipse,並且繼續第6步。
第5步(MAC) - MacOS dmg安裝器
為了創建Mac OS dmg
拖放安裝器,不需要任何的要求。
注意:為了讓安裝器映像能工作,它的名稱必須與應用名稱相同。
第5步(Linux等) Linux rpm安裝器
其它打包選項(Windows的msi
,Linux的rpm
)參考本地打包博客 或者本oracle 文檔.
第6步 運行build.xml
最後一步,我們使用ant運行build.xml
,右擊 build.xml
文件| Run As | Ant Build。
編譯將運行一會(在我的計算機上大概1分鐘)。
如果一切都成功,你應該在build/deploy/bundles
目錄下找到本地打包。Windows版本看起來如下所示:
文件AddressApp-1.0.exe
可以用作為單個文件安裝應用。該安裝程序將拷貝打包到C:/Users/[yourname]/AppData/Local/AddressApp
目錄下。