当前位置: 首页 > 知识库问答 >
问题:

Maven多模块Spring Boot项目

卢雅惠
2023-03-14

我正在尝试创建一个多模块的项目,包含两个模块,核心和Web。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但在部署它时遇到了问题。然而,我很困惑配置是如何工作的。

核心模块将包含域html" target="_blank">对象/实体、Spring数据JPA存储库、服务,并将打包为一个JAR。Web模块将具有Spring Security、控制器和视图。它将被包装成一场战争。

Spring Boot项目的正常结构如下所示

/
pom.xml
src/
..main/
....com/
......example/
........app/
..........Application.java
..resources/
....application.properites

我基本上有两个这样的类和两个Spring Boot应用程序/配置/初始化类。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TimesheetCoreApplication {

  public static void main(String[] args) {
    SpringApplication.run(TimesheetCoreApplication.class, args);
  }
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TimesheetWebApplication {

    public static void main(String[] args) {
        SpringApplication.run(TimesheetWebApplication.class, args);
    }
}

而且

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(TimesheetWebApplication.class);
    }

}

处理这个问题的最佳方法是什么?如果可能的话,我想利用Spring靴。

共有1个答案

贾越
2023-03-14

您的设计有点不正确,如果您的核心项目将有域实体,存储库等,它不需要是一个引导应用程序。就像你说的,这将是一个罐子。

现在,您可以使web应用程序成为一个依赖于核心模块JAR的引导应用程序。您可以在引导应用程序中定义.properties或.yml,这样您就可以很好地进行了。

Spring初始化器的问题是,它给您的印象是所有代码都需要驻留在单个项目或模块下。

  • Project-Core-Module(打包JAR->域实体、存储库等)
  • 项目-服务-模块(引导->配置、rest接口、安全等)
  • project-system-tests(在编译时运行并验证生成)

现在您将核心和系统模块与服务模块绑定为依赖项。

 类似资料:
  • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行的JAR文件。是一个带有Spring Boot的多模块项目,该项目将有3个模块。这里是父模块pom。xml 这里是模块核心 这里是模块web: 从父根目录,我使用以下方法生成所有模块: 但问题是tdk-web-0.0.2-SNAPSHOT。jar不包含tdk-c

  • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两

  • 我有一个带有myapp-core和myapp-web模块的myapp父pom类型maven项目。myapp-core模块作为依赖项添加到MyApp-Web。 myapp-core模块中的所有类都位于根包com.myapp.core中,而myapp-web模块中的所有类都位于根包com.myapp.web中 主要的application.java也在com.myapp.web包中。由于我的核心模块根

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样