天天看點

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

項目簡介

項目下有多個module

其中client和common-lib是用于存放公共類

gateway和backend都引用到client和common-lib

web是前端項目

docs是項目文檔路徑

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

将各module打包jar包

因為我的項目實際隻有gateway、backend、web需要打包運作, common-lib和client都是沒有啟動類的,無需運作。

于是開始打包backend

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

但是可以看到報錯了

Could not resolve dependencies for project…

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

根據報錯資訊可以看出是沒有找到依賴包client

這也就說明,我們需要先打包依賴module到本地maven倉庫中

于是先将兩個client和common-lib打包到maven倉庫中

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

注意項目要切換成你要打包的module

輸入指令:mvn install

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包
IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

打包成功後我們在本地的倉庫中就可以看到這兩個jar包了

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

然後再重新打包gateway和backend

打包gateway成功

運作測試 java -jar xxx

發現報錯

查閱相關資料發現是編譯時jdk版本問題

于是找到pom.xml中定義jdk的地方

将jdk修改為1.8,同時将release标簽和compilerargs标簽注釋掉,否則後面可能會報錯無效的标記

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

另外這裡的标記也注釋掉

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

然後重新打包,成功,同樣作用于backend上,打包成功(注:打包前先clean)

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包
IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

再次java -jar jar包名 運作項目,運作成功

後續開發後再次打包

再次打包報錯

後續開發,新增了不少子產品,再次打包時發現之前的打包出現了錯誤,具體報錯定位到測試類上,因為時間關系沒有細究原因,因為是測試類,之間将其删除了重新打包,打包成功了,但是運作時出錯

報錯内容大緻如下:

具體如圖所示

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

解決

根據提示其實大概能猜測出來是版本的問題,猜測大緻是java,tomcat版本問題。

我伺服器上的java版本是1.8,打包時也已經将jdk申明為1.8了,而且如上所示,之前使用同樣的方法是打包并且運作成功了的。現在出現了問題,于是查閱大量資料後,開始嘗試網上其他的辦法,彙總如下

  • jdk降級
    IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包
    各module也降級
    IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包

重新打包部署。這裡我采用這種辦法仍然不行

  • jdk更新

    上面那種辦法啟發了我,既然降級不行那就更新,伺服器上的jdk是1.8版本的,部署采用的是14版本,是以在伺服器上又安裝了jdk14,并将之前在pom中的改動恢複了,還是采用jdk14,–enable-preview的注釋也取消了,如下所示

<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<release>14</release>
					<compilerArgs>--enable-preview</compilerArgs>
					<!--idea不重置language level-->
					<source>11</source>
					<target>11</target>
					<!--idea不重置language level-->
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.2.0</version>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>3.0.0-M5</version>
				<configuration>
					<argLine>--enable-preview</argLine>
				</configuration>
			</plugin>
		</plugins>
           

這裡安裝後可能會遇到多jdk切換不成功的問題,可參考解決辦法如下:

引用來源

1.為了從jdk1.8切換到1.7,首先做的是将環境變量中的JAVA_HOME值改成1.7的安裝路徑。這個是必須做的。做完bai這個在cmd下輸入Java -version檢視是否切換,如果ok,那就成功了,否則試試後幾個方法。

2.找到控制台,檢視方式選擇大圖示或者小圖示,找到java選項并點選進入。然後選擇java欄,點選檢視,将dk1.8的啟用勾選去掉,并儲存。然後檢視是否切換。

3.找到目錄C:\Windows\System32,将java.exe,javaw.exe,javaws.exe删除即可。如果是64位系統,在C:\Windows\SysWOW64下去删。

4.将環境變量Path路徑中的%JAVA_HOME%\bin值移到最前面,我的是win10系統,移動後如下:

5.如果還不能切換,你可以使用 WIN + R 輸入regedit 敲回車打開系統資料庫

找到 HKEY_LOCAL_MACHINE–SOFTWARE–JavaSoft,點選Java Development Kit 更改右邊 CurrentVersion的值設定為你想要的版本值(右鍵-更改就可以)。

将項目打包後cmd運作,運作成功

IDEA打包多module springboot項目(流程紀實)項目簡介将各module打包jar包後續開發後再次打包