2016-11-16 42 views
1

在將現有Spring-Boot應用程序的類從更改構建jar文件的結構更改爲新應用程序後,我遇到了麻煩。從Spring Boot 1.4應用程序導入maven dependecies

他們更改了jar文件,以便應用程序自己的類現在位於BOOT-INF/classes中,而不是位於jar文件的根目錄下。

但是,當我有一個正常的Maven依賴到這個Spring引導應用程序,我不能從這個應用程序中導入現有的類,並進入我的新應用程序中的新類。

他們改變了結構...

+2

你不應該包括彈簧引導到罐子擺在首位的又一個春天啓動罐子。 –

+0

如果在應用程序之間共享代碼,那麼應該在單獨的庫項目中。 – OrangeDog

回答

3

這裏的解決方案是重構你的代碼,讓你在這兩個應用程序依賴於班一個單獨的項目可用之前它的工作就好了。

現在,您可以通過導入兩個你的項目的依賴使用這些類:

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>example-shared</artifactId> 
</dependency> 

確保你沒有使用這個新提出的共享項目的春天啓動Maven插件,你可能不應該也可以使用任何Spring引導啓動器,因爲它們會加載很多可能不需要的依賴關係。

+0

是的,我知道這可能是正確的方法。我們創建了一個REST-API作爲Spring-Boot應用程序,並將一個對象定義爲應用程序內POST方法的輸入。因此,我們很容易在API中使用Maven依賴項,以便在調用應用程序中使用定義的對象......並且這一切都很好,直到Spring Boot從版本中更改了jar文件的佈局1.4。所以我只是想知道是否有可能在版本1.4之後以相同的方式使它工作...... – runesr

0

我發現它實際上可以使用Spring Boot應用程序作爲依賴項。儘管它最有可能不被推薦。但在某些情況下,它可以讓它更容易。 此解決方案意味着您不能使用可執行文件。

「可執行歸檔不能用作BOOT-INF /類的依賴關係作爲可執行jar格式的包的應用程序的類。這意味着,當所述可執行罐子用作依賴他們不能被找到」。

我的問題的解決方案是將配置分類器包含到spring-boot-maven-plugin中。像這樣對Maven:

<plugin> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-maven-plugin</artifactId>     
<configuration> 
    <classifier>exec</classifier> 
</configuration> 
</plugin> 

或類似這樣的搖籃:

bootRepackage { 
classifier = 'exec' 
} 
相關問題