首页 文章

带有Spring Boot的多模块maven

提问于
浏览
6

我想知道如何使用Spring Boot创建一个带有maven的多模块项目 .

有人能告诉我一个“父母和朋友”的例子吗?

谢谢

3 回答

  • 3

    这个问题太简单无法回答或太复杂而无法理解,否则我无法解释为什么没有答案 .

    我会寻求一个使用如下文件夹结构的解决方案

    project folder
    |---pom.xml
    |---module1
        |---pom.xml
        |---src
    |---module2
        |---pom.xml
        |---src
    |---module3
        |---pom.xml
        |---src
    

    我会用pom包装来定义项目的 pom.xml ,例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.2.7-RELEASE</version>
            <relativePath/>
        </parent>
    
        <groupId>com.myproject</groupId>
        <artifactId>project</artifactId>
        <packaging>pom</packaging>
        <version>0.0.1-SNAPSHOT</version>
    
        <modules>
            <module>module1</module>
            <module>module2</module>
            <module>module3</module>
        </modules>
    
        <name>MySupercoolProject</name>
        <description>What else?</description>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencies>
          <!-- Put here dependencies shared by your project -->
        </dependencies>
    </project>
    

    如您所见,项目的父级将是 spring-boot-starter-parent .

    然后,你的一个模块的 pom.xml 将是,例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>com.myproject</groupId>
            <artifactId>project</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
    
        <groupId>com.myproject</groupId>
        <artifactId>module1</artifactId>
        <packaging>war</packaging>
        <version>0.0.1-SNAPSHOT</version>
    
        <name>Application</name>
        <description>SudenGut application</description>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <start-class>com.myproject.MyApplication</start-class>
            <java.version>1.8</java.version>
            <tomcat.version>8.0.24</tomcat.version>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--- this will not be enough to provide a cool app :) -->
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins
        </build>
    </project>
    

    其中主要应用程序是 MyApplication.java ,包 com.myproject module1 .

    除非你有其他子模块(即再次使用pom包装),否则我会在没有主应用程序的情况下将jar包装用于其他模块 .

  • 0

    @juanhl就这么简单 . 您可以使用Spring Boot创建多模块maven项目 .

    步骤:1)创建Maven项目 . 父项目的pom.xml如下所示,

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>com.springmultumoduleweb</groupId>
          <artifactId>multimodule-web-app</artifactId>
          <packaging>pom</packaging>
    
          <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.6.RELEASE</version>
          </parent> 
            <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
                <java.version>1.8</java.version>
            </properties>
          <modules>
            <module>multimodule-api</module>
            <module>multimodule-service</module>
            <module>EarModule</module>
          </modules>
          <version>0.0.1-SNAPSHOT</version>
        </project>
    

    2)将maven模块添加到父模块子模块可能具有一个或多个其他模块的依赖关系,并且包装类型可能是jar或war .

    3)再创建一个模块来生成ear文件 . (包装类型:ear)包含所有模块的依赖关系,如下所示,

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.springbootparent.demo</groupId>
        <artifactId>com.springbootparent.demo</artifactId>
        <version>0.0.1-SNAPSHOT</version
      </parent>
      <artifactId>com.springboot.ear</artifactId>
      <packaging>ear</packaging>
      <dependencies>
        <dependency>
            <groupId>com.springbootparent.demo</groupId>
            <artifactId>com.springboot.service1</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.springbootparent.demo</groupId>
            <artifactId>com.springboot.service2</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.springbootparent.demo</groupId>
            <artifactId>com.springboot.war1</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>com.springbootparent.demo</groupId>
            <artifactId>com.springboot.war2</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
      </dependencies>
    </project>
    

    4)清理并安装maven父项目 .

    5)在服务器上部署创建的ear / war文件 . (对于必须在企业应用程序服务器上部署的ear文件)

    -祝好运

  • 0

    模块作为 spring 启动项目

    Spring启动通常适用于父启动 . 但是如果你创建了多模块项目,并且如果你想在你的某些模块上使用spring boot,那么有一个重要的问题,哪一个是父模块?当然你的主要项目必须是父项目 . 因此,您应该将spring boot用作模块中的依赖项 .

    <dependencyManagement>
         <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    有关详细信息,请查看以下文档; https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-without-a-parent

相关问题