使用Maven做爲項目jar包依賴的管理,經常會遇到命令行啓動,筆者也是哥菜鳥,在作微服務,以及服務器端開發的過程當中,經常會遇到項目的啓動須要使用main方法,筆者潛心的研究了不少博客,發現大多寫的都是很零散,沒有設計到應用場景,這裏打算我的總結一下,一方面做爲本身的學習筆記,另外一方面做爲你們的技術分享java
這裏是我寫好的一個項目的啓動腳本,這裏須要注意幾個地方linux
1:wins的編輯器,換行符是\r\n,而linux的換行符是\n,因此在咱們編輯好了.sh的啓動腳本後,會發如今linux上啓動會出現 {\r 不是內部命令,xxxx行腳本出錯,這裏做爲開發者必定要注意,那麼,怎麼解決呢,使用notePad++打開。選擇----》視圖-----》符號顯示----------》顯示全部符號shell
而後打開查找替換以下服務器
替換完成後。顯示以下:app
對比第一張圖顯示,換行符是否是不同了呢?maven
下面講解一下,啓動腳本的一些參數,和啓動命令編輯器
SERVER=/usr/local/netty/mqtt 這裏是咱們打包的jar包的存放路徑微服務
echo 控制檯輸出的提示符,就像咱們的Syste.out.println()學習
JAVA_HOME JDK安裝路徑spa
cd 切換目錄
classPath jar包存放目錄
nohup linux執行命令
java -cp top-transfer.jar com.top.application.mqtt.activit.ActivitReceiveTopic start & java虛擬機啓動main方法命令
註釋:java -cp top-transfer.jar com.top.application.mqtt.activit.ActivitReceiveTopic start 也能夠單獨的做爲mian方法的啓動命令,只是這種啓動方式,不是以進程的方式啓動,當咱們關閉控制檯的時候進程也就關閉了,啓動的進程也隨之關閉,程序就不繼續運行了。
下面咱們來講明一下,Maven工程的打包方式,如上所述,maven工程必然會引用不少其餘的jar包依賴,這個時候咱們須要把第三方的jar包引用同時打包到咱們的工程裏面,這方便Mavne已經作好了插件
經常使用的插件maven-assembly-plugin,這個普及度比較高。
咱們在pom.xml中添加以下代碼
咱們對開發完成的項目進行maven打包
Run後看到以下提示信息
BUILD SUCCESS說明打包成功,找到打包好的目錄,看到出現了兩個jar包,咱們反編譯去看看jar包的內容
反編譯結果以下,發現第一個包沒有jar包依賴
查看第二個包,以下包括咱們的配置文件,第三方jar包都被打包進來了。
咱們在注意看,在jar包中有一個MANIFEST.MF的文件,發現這個文件里路了咱們打包好的jar包的配置信息,就至關於說明書同樣。
咱們在注意看上面說到的打包插件中有這樣一行帶代碼
在mainClass標籤中制定咱們的jar包main方法,在期內添加main方法
而後咱們從新打包,反編譯第二個jar包
多了main方法,這樣咱們就制定jar包的啓動窗口。至此打包完成
在linux 咱們還要使用 chmod a+x startup.sh 把編輯好的腳本添加到linux的北部shell啓動腳本中。
而後執行 ./startup.sh ,大功告成。