【问题标题】:Maven - Referring for properties file in subfolder not workingMaven - 引用子文件夹中的属性文件不起作用
【发布时间】:2014-05-30 12:38:59
【问题描述】:

在我的 Maven 项目中,我有一个 spring 配置文件。它指的是一组属性文件。属性文件位于 src/main/resources 中的配置文件夹下。 Spring 配置文件位于 src/main/resources/META-INF/spring/ 下。在安装期间,根据 Maven 标准,所有这些文件都在目标/类下可用。

现在在 spring config XML 中:如果我引用下面的属性文件它不起作用

属性名称=“位置”值=“类路径:test.properties” 或
属性名称="位置" 值="类路径*:test.properties"

我不得不提供子文件夹来实际引用必要的属性文件。像这样。

property name="location" value="classpath:config/test.properties"

这是 Maven 期望我们查找属性文件的方式吗?请澄清并让我知道最好的方法是什么。

谢谢

【问题讨论】:

  • 这是 Spring 的行为,与 Maven 关系不大。我会改变问题来询问 Spring 期望在哪里找到这些类。

标签: java spring maven maven-3


【解决方案1】:

在 Spring 中,classpath 指的是 classes 文件夹。如果您的配置文件在classesconfig 的子文件夹下,您需要指定子文件夹名称。因此,这就是以下工作的原因:

property name="location" value="classpath:config/test.properties"

【讨论】:

  • 感谢您的建议,威尔。实际上,我们目前正在从 ant build 升级到 Maven build。在旧环境中它工作得很好。所以我认为这更多地与 Maven 而不是 Spring 有关。
  • classes 文件夹的结构现在看起来与 Ant 不同吗?
  • 是的。我们已将项目拆分为多个模块。 Java 文件位于单独的模块中。所有的配置文件都被移动到一个单独的模块中。 Java 模块设置为依赖于包含配置文件的模块。但是除了模块化之外,配置文件的文件夹结构还是一样的。
  • 它现在可以工作了!!!我必须明确提及子文件夹作为新的资源文件夹。默认情况下,maven 类路径将指向 src/main/resources。如果我们想在特定的子文件夹中有属性文件和 XML 文件,应该在 pom.xml 中明确提及。 src/main/resources/config*.xml*.properties
【解决方案2】:

它现在可以工作了!!!我必须明确提及子文件夹作为新的资源文件夹。默认情况下,maven 类路径将指向 src/main/resources。如果我们想在特定的子文件夹中拥有属性文件和 XML 文件,则应在 pom.xml 中明确提及,作为单独的“build”标签,如下所示。

    <resource>
        <directory>src/main/resources/config</directory>
        <includes>
          <include>*.xml</include>
          <include>*.properties</include>
        </includes>            
    </resource>

【讨论】:

  • 对我来说看起来像是一个 hack,尤其是添加 src/main/resources 的子文件夹,我怀疑这会导致配置文件被复制。像 ${basedir}/src/main/config 这样的东西会更有意义。
  • 你在那里做的,AFAIK,是你从子文件夹复制到父文件夹(并像说的那样复制你的配置)。您应该修复 Spring 配置。
  • 我没有看到任何重复的配置文件。唯一的区别是最终的类路径将所有文件复制到父文件夹,并且不再有子文件夹。同样在我们的项目中,我们的项目中有大约 80 个 spring 配置 XML,并且在未来几天它也一定会增长。我只需要父文件夹中的这些文件进行单元/集成测试。修复每个 junit 测试用例以查找我们适当的 spring 配置文件以及实际 spring 配置文件中的属性文件将非常乏味。我们可以通过其他方式实现这一目标吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 2013-10-08
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 2013-10-16
相关资源
最近更新 更多