2015-10-16 110 views
1

我們有一個Spring Boot應用程序(公開REST服務)和多個模塊,爲了開發目的,我們使用默認的Spring Boot構建方法 - Maven將它構建爲一個可執行的war文件,進去。多模塊Spring Boot應用程序

對於生產性部署而言,這是行不通的。我們已經安裝了Web應用程序服務器,我們需要一個定期的,不可執行的戰爭,可以部署在這些服務器上。我已經想通了,我該如何構建它。

我們還將在同一生產性服務器上部署另一個相關Web應用程序(war文件)(例如 - 應用程序的模擬器)。當然,他們會使用(某些)相同的模塊,所以它提出的問題是如何設置maven來構建戰爭和模塊外的jar,所以其他應用程序(部署在同一服務器上的war文件)可以依賴於他們。我無法找到一個很好的解釋/例子如何做到這一點。

任何想法,鏈接,博客?

回答

0

這實際上比Spring Boot更像是一個Maven問題。當你有一個多模塊項目時,Maven仍然會爲每個模塊創建單獨的構件,因此您仍然可以將它們作爲其他地方的依賴項引用。

例如在我使用Spring啓動的設置中,我有父項目和它下面的模塊。大多數模塊都是jar工件,一些模塊依賴於項目中的其他模塊,當然也有一些外部依賴。通過使用父級,我們可以使用父級中的佔位符標準化依賴項中使用的一些版本。由於這些工件仍然是單獨構建和發佈的,因此您可以在其他項目中引用它們,這是我相信您所要求的。

例如(只是主要的標籤,而不是全部):

家長:

<groupId>com.somecompany</groupId> 
<artifactId>project-parent</artifactId> 
<packaging>pom</packaging> 
<version>1.1.2-SNAPSHOT</version> 
<modules> 
    <module>module1</module> 
    <module>module2</module> 
</modules> 

模塊1:

<parent> 
    <groupId>com.somecompany</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.1.2-SNAPSHOT</version> 
</parent> 

<groupId>com.somecompany.tools</groupId> 
<artifactId>project-tools-core</artifactId> 
<version>1.1.2-SNAPSHOT</version> 
<packaging>jar</packaging> 

單詞數:

<parent> 
    <groupId>com.somecompany</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.1.2-SNAPSHOT</version> 
</parent> 

<groupId>com.somecompany.apps</groupId> 
<artifactId>project-webapp</artifactId> 
<version>1.1.2-SNAPSHOT</version> 
<packaging>war</packaging> 
<!-- dependency on other module --> 
<dependency> 
    <groupId>com.somecompany.tools</groupId> 
    <artifactId>project-tools-core</artifactId> 
    <version>${project.version}</version> 
</dependency> 

一些其他項目:

<groupId>com.somecompany.apps</groupId> 
<artifactId>project-webapp-services</artifactId> 
<version>1.3.0-SNAPSHOT</version> 
<packaging>war</packaging> 
<!-- dependency on other module which is published --> 
<dependency> 
    <groupId>com.somecompany.tools</groupId> 
    <artifactId>project-tools-core</artifactId> 
    <version>1.1.1</version> 
</dependency> 

因此,在這種情況下,假設您已經發布了父代及其模塊的版本1.1.1,您可以讓其他項目引用任何已發佈的工件。也許這是您錯過的發佈和發佈步驟。

相關問題