You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maven中让依赖Jar与主项目Jar正确读取各自的config.properties

解决方案与配置建议

问题根源

两个项目的config.properties文件名相同且都放在resources根目录,当A-secondary依赖A-primary时,classpath中同名资源会被后加载的模块(A-secondary)覆盖,导致始终读取自身的配置。

一、A-primary的配置调整(二选一即可)

1. 给配置文件指定专属包路径

将A-primary的config.properties移动到专属包路径下,比如:

A-primary/src/main/resources/com/yourcompany/aprimary/config.properties

这样资源的完整classpath路径唯一,不会与A-secondary的根目录配置冲突。

2. 重命名配置文件

直接修改A-primary的配置文件名,比如改为aprimary-config.properties,确保文件名在classpath中唯一。

二、A-secondary的读取方式

根据你使用的读取方式,对应调整:

  • Java原生ClassLoader读取:指定完整资源路径,比如:
    // 对应包路径方案
    InputStream is = getClass().getClassLoader().getResourceAsStream("com/yourcompany/aprimary/config.properties");
    // 对应重命名方案
    InputStream is = getClass().getClassLoader().getResourceAsStream("aprimary-config.properties");
    
  • Spring/Spring Boot环境:使用@PropertySource指定具体资源位置:
    // 包路径方案
    @PropertySource("classpath:com/yourcompany/aprimary/config.properties")
    // 重命名方案
    @PropertySource("classpath:aprimary-config.properties")
    

三、符合Maven设计原则的配置架构参考

  1. 遵循约定大于配置:避免在resources根目录放置通用名称的配置文件,不同模块的配置应放在各自的包路径下,这是Maven资源管理的核心约定之一。
  2. 模块职责单一:A-primary作为依赖模块,应明确暴露自身的配置资源路径,不依赖根目录的默认资源;A-secondary仅负责读取自身私有配置和依赖模块的指定公共配置。
  3. 资源分类管理:将跨模块共享的配置抽离到父模块或专门的配置模块,私有配置留在各自模块,从根源避免资源冲突。
  4. 使用Maven资源插件管控打包:在A-primary的pom.xml中配置maven-resources-plugin,确保资源被打包到指定路径,避免意外覆盖:
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
          <configuration>
            <resources>
              <resource>
                <directory>src/main/resources</directory>
                <includes>
                  <include>com/yourcompany/aprimary/**/*</include>
                </includes>
              </resource>
            </resources>
          </configuration>
        </plugin>
      </plugins>
    </build>
    

内容的提问来源于stack exchange,提问作者Kuengaer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:05:20