【JavaFx教程】第七部分:部署
我想已經寫到本教程系列的最後一部分了,應該教你如何部署(例如:打包和釋出)AddressApp
第7部分的主題
- 使用e(fx)clipse本地包(Native Package)部署我們的JavaFX應用程式。
什麼是部署
部署是打包和釋出軟體給使用者的過程。這是軟體開發的關鍵部分,因為它是第一次與使用我們軟體的使用者交流。
Java的廣告口號是編寫一次,到處執行,這說明Java語言的跨平臺好處。理想情況下,這意味著我們Java應用可以執行在任何裝備有JVM的裝置上。 在過去,安裝Java應用程式的使用者經驗不總是平滑的。如果使用者在系統中沒有要求的Java版本,它必須首先直接安裝它。這導致有些困難,例如,需要管理員許可權,Java版本之間的相容問題等等。 幸運的是,JavaFX提供新的部署選項稱為本地打包
建立本地包
目標是在使用者的計算機上單個目錄中建立一個自包含的應用程式。下面是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步 新增安裝程式的圖示
我們希望安裝程式有一些好看的圖示:
- 在
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
目錄下。
下一步是什麼?
我希望本教程對你開始學習JavaFX會有所幫助,從此你將能夠編寫自己的JavaFX專案。
我感謝你的反饋。如果你有任何建議或者不清楚的地方,隨便寫評論。