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

是否可以从Maven多模块项目的父模块中的config文件夹加载Spring-Boot属性?

司雅畅
2023-03-14

是否可以从多模块项目的父模块中的config文件夹加载多个Spring-Boot.yml配置文件?

结构如下所示:

parent-module/
  pom.xml
  config/
    application-prd.yml
    application-dev.yml
  module1
    pom.xml
    src/main/resources/
      logback-spring.xml
      bootstrap.yml
mvn -pl module1 spring-boot:run
   OR
mvn spring-boot:run

我们知道这是正确的:子POM从父POM继承属性、依赖项和插件配置。但这不是意味着{parent}/config/application.yml已经在类路径中了吗?

用于证明的示例项目:https://github.com/djangofan/spring-boot-maven-multi-module-example。克隆它,如果你认为你能解决它就修改它。

共有1个答案

计承德
2023-03-14

不需要编写代码。您可以使用Exec Maven插件进行此操作。将插件添加到父模块:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.6.0</version>
      <configuration>
        <mainClass>PACKAGE.MODULE_MAIN_CLASS</mainClass>
        <arguments>
          <argument>--spring.profiles.active=dev</argument>
        </arguments>
      </configuration>
    </plugin>
  </plugins>
</build>

然后运行mvn install一次,然后在您想启动应用程序时运行mvn exec

mvn exec:java -pl module1

有关多模块项目中Maven目标的更多信息,请查看以下答案https://stackoverflow.com/a/11091569/512667。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.example.Application</mainClass>
        <workingDirectory>${maven.multiModuleProjectDirectory}</workingDirectory>
        <arguments>
            <argument>--spring.profiles.active=dev</argument>
        </arguments>
    </configuration>
</plugin>

在这种情况下,执行:

mvn spring-boot:run -pl module1
 类似资料:
  • 调用配置 我在构造函数中得到了一个NullPointerException。

  • 我有以下Maven项目结构: i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们打包到一个JAR文件中。我在谷

  • 我正在尝试创建一个多模块的项目,包含两个模块,核心和Web。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但在部署它时遇到了问题。然而,我很困惑配置是如何工作的。 核心模块将包含域对象/实体、Spring数据JPA存储库、服务,并将打包为一个JAR。Web模块将具有Spring Security、控制器和视图。它将被包装成一场战争

  • 在开始之前,我想说我已经尝试了spring-boot-devtools重新加载多模块maven项目更改中提出的解决方案,这对我并不起作用。 问题: 我有这样一个多模块Spring Boot项目: null 我使用Netbeans GUI如果这有任何帮助。我还尝试从命令行运行该项目,但没有成功。所有模块上的Maven打包设置为。

  • 我设计了一个maven多模块项目,就像下面这个帖子的第一个答案:Multi-module maven with Spring Boot 现在我想要一个通用的maven模块,它可以包含一些供多个微服务使用的模型。如果我将这个公共项目作为第一级父pom的子项目(这样所有由引导注入的依赖项(如jpa、jackson等)都可用于公共项目),那么STS/Spring将它检测为引导应用程序,并抱怨maven

  • 我们正在多模块项目中使用spring boot。 我们有一个域访问模块,它具有公共的域对象类、存储库,以及数据源、JPA、Hibernate等配置,这些都是使用application.properties配置的。我们将所有这些配置放入公共模块中,以避免在更高级模块中重复这些公共配置。 在构建域模块时,这一切都运行良好,因此在测试单元中正确地加载了配置。 由于我们正在使用spring-boot,因此