Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带spring boot的多模块项目_Java_Spring_Maven - Fatal编程技术网

Java 带spring boot的多模块项目

Java 带spring boot的多模块项目,java,spring,maven,Java,Spring,Maven,我正在使用spring boot创建一个项目 springbootmaven结构要求它有一个定义为springbootstarterparent的父级 我有一种情况,我想将我的应用程序打包为一个多模块结构,其中我定义了包含与地理相关功能的模块 像这样,每个模块都有一个jar包 parent Pom | |-----------Core module | |-----------India Module | |----------Africa Module | |--------- Europe

我正在使用
spring boot
创建一个项目

springbootmaven结构要求它有一个定义为
springbootstarterparent
的父级

我有一种情况,我想将我的应用程序打包为一个多模块结构,其中我定义了包含与地理相关功能的模块

像这样,每个模块都有一个jar包

parent Pom
|
|-----------Core module
|
|-----------India Module
|
|----------Africa Module
|
|--------- Europe Module
现在,我可以根据地理位置使用maven概要文件打包我的应用程序,在印度概要文件中,只包含和打包核心模块和印度模块


如果我的父项已经定义为
springbootstarterparent
,那么如何使用springboot实现它呢

我不知道Spring Boot的具体情况

但一般来说,使用Spring,这可以通过通用配置包来完成。 因此,在主应用程序/配置中,您可以执行以下操作:

@Configuration
@ComponentScan("com.example.common.bootstrap")
然后,您可以将特定于模块的配置放入每个模块的引导包中。
因此,只需创建一个com.example.common.boostrap.AsiaModule和com.example.common.bootstrap.EuropeModule作为Spring配置,就可以了。

有两种方法可以做到这一点

  • 在父pom中使用DependencyManager,如中所示

     <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>
    
    
    org.springframework.boot
    spring启动依赖项
    聚甲醛
    1.2.3.1发布
    进口
    

  • 我就是这样做的。根POM(带有POM包装)将spring boot作为父级

    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>1.2.3.RELEASE</version>
    </parent> 
    
    
    org.springframework.boot
    spring启动程序父级
    1.2.3.1发布
    
  • 模块pom将根pom作为父对象。 POM添加的核心模块依赖于其他模块。 它还有“SpringBootMaven插件”来创建胖jar

    spring上下文是从java-jarcore_xxx.release.jar开始的


    当然,如果您有组织方面的父POM,那么第一个选项更合适。

    现在,您可以使用官方的Spring guidline解决这个问题,并创建Spring Boot多模块项目。只需按照说明操作即可

    您应该使用@Import,并在modul配置类上定义ComponentScan。我将@SpringBootApplication放在我的应用程序开始类中,该类的包是x.y,应用程序中的所有包都是x.y.*因此,如果该类位于类路径中,则会执行组件扫描。我的问题不同,我关心的是多模块spring boot应用程序中的maven pom结构;这只是引入依赖关系管理的一个方便。同意,请看我的答案,关于可能的方法。请评论同意的正确性。请看我的答案。还请评论我的方法的正确性