1. 程式人生 > >【JavaFx教程】第七部分:部署

【JavaFx教程】第七部分:部署

Screenshot AddressApp Part 7

我想已經寫到本教程系列的最後一部分了,應該教你如何部署(例如:打包和釋出)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上):

AddressApp本地包

app目錄包含我們的應用資料和runtime目錄(包含平臺相關的Java執行時)。

為了讓使用者更加舒適,我們也提供一個安裝器:

  • Windows下的exe檔案安裝器
  • MacOS下的dmg
    (拖放)安裝器。

E(fx)clipse外掛會幫助我們生成本地包和安裝器。

第1步 編輯build.fxbuild

E(fx)clipse使用build.fxbuild檔案生成一個被Ant編譯工具使用的檔案。(如果你沒有一個build.fxbuid檔案,在Eclipse中建立一個新的Java FX專案,並且拷貝生成的檔案過來。

  1. 從專案的根目錄下開啟build.fxbuild

  2. 填寫包含一個星號的欄位。*對於MacOS:在應用程式標題中不能使用空格,因為好像會產生問題*。 fxbuild設定

  3. 在Windows下Packaging Format選擇exe,MacOS下選擇dmg,Linux下選擇rpm

  4. 點選Generate ant build.xml only的連線(在右邊可以找到)。 生成ant編譯

  5. 驗證是否建立一個新的build目錄和檔案build.xml

第2步 新增安裝程式的圖示

我們希望安裝程式有一些好看的圖示:

  1. build目錄下建立下面的子目錄:
    • build/package/windows (只用於Windows)
    • build/package/macos (只用於macos)
  2. 拷貝上面的相關圖示到這些目錄中,現在它應該看起來如下所示:
    安裝器圖示
  3. 重要:圖示的名稱必須精確匹配build.fxbuild中指定的Application的標題名
    • YourAppTitle.ico
    • YourAppTitle-setup-icon.bmp
    • YourAppTitle.icns

第3步 新增資源

我們的resources目錄不能自動拷貝。我們必須手動新增它到build目錄下:

  1. build目錄下建立下面的子目錄:
    • build/dist
  2. 拷貝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安裝器

Windows下AddressApp

使用Inno Setup,我們能為我們的應用程式建立一個單獨.exe檔案的Windows安裝器。生成的.exe執行使用者級別的安裝(無需管理員許可權)。也建立一個快捷方式(選單和桌面)。

  1. 下載Inno Setup 5以後版本,安裝Inno程式到你的計算機上。我們的Ant指令碼將使用它自動生成安裝器。

  2. 告訴Windows Inno程式的安裝路徑(例如:C:\Program Files (x86)\Inno Setup 5)。新增Inno安裝路徑到Path環境變數中。如果你不知道哪裡可以找到它,閱讀Windows中如何設定路徑和環境變數.

  3. 重啟Eclipse,並且繼續第6步。

第5步(MAC) - MacOS dmg安裝器

MAC中AddressApp

為了建立Mac OS dmg拖放安裝器,不需要任何的要求。

注意:為了讓安裝器映像能工作,它的名稱必須與應用名稱相同。

第5步(Linux等) Linux rpm安裝器

其它打包選項(Windows的msi,Linux的rpm)參考本地打包部落格 或者本oracle 文件.

第6步 執行build.xml

最後一步,我們使用ant執行build.xml右擊 build.xml檔案| Run As | *Ant Build*。

執行Ant編譯

編譯將執行一會(在我的計算機上大概1分鐘)。

如果一切都成功,你應該在build/deploy/bundles目錄下找到本地打包。Windows版本看起來如下所示:

部署檔案

檔案AddressApp-1.0.exe可以用作為單個檔案安裝應用。該安裝程式將拷貝打包到C:/Users/[yourname]/AppData/Local/AddressApp目錄下。

下一步是什麼?

我希望本教程對你開始學習JavaFX會有所幫助,從此你將能夠編寫自己的JavaFX專案。

我感謝你的反饋。如果你有任何建議或者不清楚的地方,隨便寫評論。

歡迎關注公眾號: