弹簧引导忽略了资源在多模块项目



我有一个包含两个模块(搜索和用户管理)的存储库。我希望两个模块都有自己的application.properties。目前我只是想激活一个配置文件,但它不适用。项目结构:

├───pom.xml
├───search
│   ├───src
│   │   ├───main
│   │   │   ├───java
│   │   │   │   └───com
│   │   │   │       └───example
│   │   │   │           └───projectname
│   │   │   │               └───search
│   │   │   │                   ├───controller
│   │   │   │                   ├───model
│   │   │   │                   ├───query
│   │   │   │                   └───Main.class
│   │   │   └───resources
│   │   └───test
│   │       └───src
│   ├───pom.xml
│   └───target
├───target
└───usermanagement
├───src
│   └───com
│       └───example
│           └───projectname
│               └───usermanagement
├───test
│   └───src
└───pom.xml

搜索resources目录有一个应用。以下内容的属性:

spring.profiles.active=dev

这个没有被使用。我必须手动更新我的运行配置文件,并将spring.config.additional-location与绝对路径传递到application.properties.

<dependencyManagement>
<dependencies>
<!-- Springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test</testSourceDirectory>
<defaultGoal>clean test install</defaultGoal>
</build>
<modules>
<module>search</module>
<module>usermanagement</module>
</modules>

搜索子节点

<dependencies>
<!-- Springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Build jar with dependencies -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>main.java.com.example.projectname.search.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

我已经尝试添加src/main/resources到父级和@ propertscan。

我认为这个问题可以通过制作第三个模块来解决,并将其命名为"Core"这个模块将包含两个扩展模块(搜索和用户管理)共享的所有代码。

这"Core"模块

  1. 不具备独立构建的能力
  2. 不包含任何类型的Spring Boot application.run命令
  3. 没有应用程序。属性文件

"Core"模块然后被导入到两个子项目中,其中任何链接的组件和/或服务都可以通过

加载。
@SpringBootApplication(scanBasePackages = "*insert package name here*")

注释。两个扩展模块都有自己的应用程序。属性文件,有自己独立的应用程序启动器和编译"core"和他们自己。

重要的是要注意,为了最容易实现,所有模块都应该具有相似的包结构。

的例子:

Core = "com.epicapp.core">

Search = "com.epicapp.search">

用户管理= "com.epicapp.usermanagement">

基本包= "com.epicapp">

我可以通过将这个添加到父元素

来解决这个问题。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

最新更新