一、前言
公司項目架構是SpringCloud微服務,單個模塊是SpringBoot,由於SpringBoot項目內置Tomcat容器,所以打包時打成Jar包,部署到Linux服務器後用命令java -jar (jar包的包名)xxxx.jar
啓動即可。
二、Idea中Maven生命週期
1. 9種生命週期
SpringBoot打成jar包我們一般使用spring-boot-maven-plugin
這個插件
-
clean
:清理,在進行真正的構建之前進行一些清理工作,移除所有上一次構建生成的文件。執行該命令會刪除項目路徑下的target文件,但是不會刪除本地的maven倉庫已經生成的jar文件。 -
validate
:驗證,驗證工程是否正確,所需的信息是否完整。 -
compile
:編譯源碼,編譯生成class文件。編譯命令,只編譯選定的目標,不管之前是否已經編譯過,會在你的項目路徑下生成一個target目錄,在該目錄中包含一個classes文件夾,裏面全是生成的class文件及字節碼文件。 -
test
:單元測試,測試。 -
package
:打包,將工程文件打包爲指定的格式,例如JAR,WAR等。這個命令擁有compile命令的功能進行編譯,同時會在target目錄下生成項目的jar/war文件。如果a項目依賴於b項目,打包b項目時,只會打包到b項目下target下,編譯a項目時就會報錯,因爲找不到所依賴的b項目,說明a項目在本地倉庫是沒有找到它所依賴的b項目,這時就用到install命令了。 -
verify
:覈實,檢查package是否有效、符合標準。 -
install
:安裝至本地倉庫,將包安裝至本地倉庫,以讓其它項目依賴。該命令包含了package命令功能,不但會在項目路徑下生成class文件和jar包,同時會在你的本地maven倉庫生成jar文件,供其他項目使用。如果a項目依賴於b項目,那麼install b項目時,會在本地倉庫同時生成pom文件和jar文件,解決了上面打包package出錯的問題。 -
build
:功能類似compile,只是只對整個項目進行編譯。 -
site
:站點,生成項目的站點文檔。 -
deploy
:複製到遠程倉庫。
2. 最常用的兩種打包方法
clean,package
,(如果報錯,很可能就是jar依賴的問題);clean,install
。
三、項目部署到Linux
對於SpringBoot打成的jar,我們想要在服務器上運行,只需要服務器有JDK即可,因爲SpringBoot自帶Tomcat。
在服務器上運行打成的jar包,一般我們只需要執行:java -jar ****.jar
即可。
但是隻是運行上面的jar的話,如果我們關掉了xshell之類的頁面,該程序就會停掉,所以我們可以使用nohup對它進行後臺運行:nohup java -jar ****.jar &
即可。
當然我們也可以在運行時指定很多參數,比如端口號等等,基本上在配置文件配置的參數我們都是可以指定的:nohup java -jar ****.jar --server.port=9091 &
。
上面運行的程序會默認將程序的所有日誌打到jar包所在目錄的nohup.out文件中,其中的日誌非常詳細,會導致日誌很多,一個定時任務會每天產生上百G的日誌,而我們基本會在程序中打印logger日誌,該處的日誌會顯得比較冗餘。
/usr/bin/nohup /usr/bin/java -XX:+HeapDumpOnOutOfMemoryError -Xmx2g -Xms1g -jar -Dspring.config.location=ncs-entry-template/application.properties ncs-entry-template/ncs-entry-template-1.0.0-SHAPSHOT.jar > ncs-entry-template/entry-template.log 2>& 1&