2015-05-13 43 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结构。 –