2015-05-13 47 views
4

我正在用spring-boot創建一個項目。帶彈簧啓動的多模塊項目

Spring引導maven結構要求它有一個父定義爲spring-boot-starter-parent

我有一種情況,我想將我的應用程序打包爲一個多模塊結構,其中我定義了包含與地理相關的功能的模塊。

事情是這樣的,每個模塊都有一個jar包,

parent Pom 
| 
|-----------Core module 
| 
|-----------India Module 
| 
|----------Africa Module 
| 
|--------- Europe Module 

現在,我可以打包取決於地理我的應用程序中使用,其中在印度的個人資料只有核心模塊和印度模塊包括和包裝Maven的配置文件。

我怎樣才能實現它使用春季啓動,其中我的父母已被定義爲spring-boot-starter-parent

+0

您不必使用起動器作爲父;這只是一個方便的依賴管理。 – chrylis

+0

同意,請參閱我的答案,在可能的方式。請對正確的 –

+0

同意發表評論。請看我的答案。請同時評論我的方法的正確性 –

回答

8

有兩種方法可以做到這一點,

  1. 使用dependencyManagement在你的父POM作爲

    <dependencyManagement> 
        <dependencies> 
         <dependency> 
         <groupId>org.springframework.boot</groupId> 
         <artifactId>spring-boot-dependencies</artifactId> 
         <type>pom</type> 
         <version>1.2.3.RELEASE</version> 
         <scope>import</scope> 
        </dependency> 
    </dependencies> 
    

  2. 這是我做的方式。根POM(聚甲醛與包裝)具有彈簧引導作爲父

    <parent> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-parent</artifactId> 
        <version>1.2.3.RELEASE</version> 
    </parent> 
    

模塊POMS具有根POM作爲父節點。 核心模塊POM添加依賴於其他模塊。 它還有'spring-boot-maven-plugin'來創建胖罐子。

Spring上下文開始與Java的罐子Core_xxx.release.jar

當然,如果你有機構明智的父母POM然後第一個選擇會更合適。

0

我不明白Spring Boot。

但是在一般情況下使用Spring,這可以通過常見的配置包來完成。 所以,在你的主應用程序/配置你做一個:

@Configuration 
@ComponentScan("com.example.common.bootstrap") 

然後你可以把模塊特定的配置在引導包爲每個模塊。 因此,只需創建一個com.example.common.boostrap.AsiaModule和com.example.common.bootstrap.EuropeModule作爲Spring Configurations,那就很好。

+0

您應該使用@Import,並在模塊配置類中定義ComponentScan。 –

+0

我將@SpringBootApplication放在我的應用程序啓動類中,其包是x.y應用程序中的所有包都是x.y. *因此如果類在類路徑中,則組件掃描完成。我的問題不同,我擔心多模塊彈簧引導應用程序中的maven pom結構。 –