cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜
jpackage命令使用場(chǎng)景
使用場(chǎng)景是面向java桌面端程序打包. 可以讓windows/mac 直接雙擊使用java程序,對(duì)系統(tǒng)里面有沒有jdk/jre不做要求.
在這里,我們先理一下以前java桌面程序是怎么運(yùn)行的:
jdk8及以前
這時(shí)候的java客戶端程序,主要分兩部分, 一部分是可執(zhí)行jar包, 一部分是電腦里面要裝jdk/jre , 然后通過
java -jar XXXXX.jar 來運(yùn)行程序.
jdk9及以后的模塊化
這是java模塊化的一個(gè)分界線,其實(shí)jdk9,jdk10,我都沒有用過, 我是直接嘗試的jdk11. 在模塊化的基礎(chǔ)上, 項(xiàng)目多了一個(gè)文件, moudle-info.java 如下圖所示:
如上圖,所示,主要是 requires , opens , exports 這三個(gè)關(guān)鍵字.
requires : 當(dāng)前模塊想要運(yùn)行的話,需要哪些依賴,相當(dāng)于在maven引包的基礎(chǔ)上,要再聲明一遍依賴
opens: 當(dāng)前模塊中的哪些包,可以被反射. 如fxml中要聲明處理的controller , 每當(dāng)fxml加載的時(shí)候,都會(huì)去新建一個(gè)controller實(shí)例, 所以需要opens controller的包名給javafx.fxml
exports: 當(dāng)前模塊有哪些包,可以被引用. 一般用于別的模塊依賴當(dāng)前模塊的時(shí)候
jdk9及以后的打包方式
在jdk9及以后,打包方式,可以不局限于打jar包,可以把jdk的這些模塊給一起用jlink打成一個(gè)鏡像.
如下我用gradle的jlink去打包
最后的成果:
如上所示, 會(huì)在build目錄,生成image鏡像文件夾,然后在其中有bin , conf, lib .然后用cmd運(yùn)行bin目錄中的Sunflower就可以了, 如下所示: 記住這朵Sunflower , 我要讓他盛開在廣大java程序員的桌面,哈哈
可以看到, 這時(shí)候除了程序主體存在,還有一個(gè)cmd窗口在這里,何其不方便!!! 這時(shí)候, jdk13及以后的jpackage命令就派上用場(chǎng)了, 剛好我寫這個(gè)的時(shí)候, jdk14 early access 版本發(fā)布了, 就直接拿jdk14做了實(shí)驗(yàn)
JDK14的jpackage命令
在安裝好jdk14之后,可以使用jpackage -h 命令看下使用說明,如下圖所示
其實(shí)這個(gè)是在上一部jlink有鏡像之后,對(duì)鏡像做了一層封裝.
我最后實(shí)驗(yàn)成功的打包命令是:
/Users/lixiang/soft/jdk-14.jdk/Contents/Home/bin/jpackage --runtime-image image --type dmg --name Sunflower --module red.lixiang.tools.desktopmain/com.platform.tools.desktop.DesktopMain--runtime-image 后面跟的是文件夾, 就是我們build目錄下的image文件夾
--type 打成什么樣的包, 在mac系統(tǒng)中有 app-image , dmg , pkg三個(gè)選項(xiàng), windows的我沒試,應(yīng)該是有exe選項(xiàng)
--name 軟件的名字, 這里是Sunflower(向日葵)
--moudle 模塊的名字,相當(dāng)于以前的Main函數(shù)的格式,這里換成了模塊 '包名'/Main函數(shù)名
運(yùn)行后結(jié)果如下:
最終如上圖,可以看到生成的dmg文件, 在mac上,進(jìn)行安裝就可以使用了
項(xiàng)目源碼
一.Sunflower應(yīng)用還在開發(fā)中, 不久后會(huì)開放下載.
二. javafx+gradle應(yīng)用: https://openjfx.io/openjfx-docs/#gradle
三. 項(xiàng)目所用到的判斷系統(tǒng)工具類,讀取/更改host工具類等開源地址如下:
https://github.com/xiaodaojava/sunshine
里面還有很多很多常用的工具類.
總結(jié)
以上是生活随笔為你收集整理的cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: camunda流程定义表无数据_BPM
- 下一篇: carbon 验证时间格式_接口测试:用