Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven-在子文件夹中引用属性文件无效_Java_Spring_Maven_Maven 3 - Fatal编程技术网

Java Maven-在子文件夹中引用属性文件无效

Java Maven-在子文件夹中引用属性文件无效,java,spring,maven,maven-3,Java,Spring,Maven,Maven 3,在我的Maven项目中,我有一个spring配置文件。它指的是一组属性文件。属性文件位于src/main/resources中的config文件夹下。Spring配置文件位于src/main/resources/META-INF/Spring/下。在安装过程中,根据Maven标准,所有这些文件都可以在目标/类下使用 现在在SpringConfigXML中:如果我像下面那样引用属性文件,它将不起作用 property name=“location”value=“classpath:test.pro

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

现在在SpringConfigXML中:如果我像下面那样引用属性文件,它将不起作用

property name=“location”value=“classpath:test.properties” 或
property name=“location”value=“classpath*:test.properties”

我被迫提供子文件夹以实际引用必要的属性文件。像这样的

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

这就是Maven希望我们查找属性文件的方式吗?请澄清,并让我知道什么是最好的方式来做到这一点


感谢在春季
classpath
指的是
classes
文件夹。如果您的配置文件位于
classes
config
子文件夹下,则需要指定子文件夹名称。因此,这就是为什么以下方法有效:

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


现在可以工作了!!!我必须明确地提到子文件夹作为一个新的资源文件夹。默认情况下,maven类路径将指向src/main/resources。如果我们希望在特定的子文件夹中有一个属性文件和XML文件,那么应该在pom.XML中明确地将其作为一个单独的“build”标记提到,如下所示

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

src/main/resources/config
*.xml
*.物业

这是一种Spring行为,与Maven关系不大。我想把问题改为问Spring希望在哪里找到这些课程。谢谢你的建议。实际上,我们目前正在从ant build升级到Maven build。在旧环境中,它工作得很好。所以我认为这与Maven而不是Spring有更多关系。classes文件夹的结构是否与Ant不同?是的。我们已将该项目分为多个模块。Java文件位于单独的模块中。所有配置文件都移动到单独的模块中。Java模块设置为依赖于包含配置文件的模块。但是除了模块化,配置文件文件夹结构仍然是一样的。现在可以工作了!!!我必须明确地提到子文件夹作为一个新的资源文件夹。默认情况下,maven类路径将指向src/main/resources。如果我们想在特定的子文件夹中包含属性文件和XML文件,那么应该在pom.XML中明确提到它。src/main/resources/config*.xml*.properties在我看来像是一种黑客行为,尤其是添加src/main/resources的子文件夹,我怀疑这会导致配置文件重复。类似${basedir}/src/main/config的东西更有意义。AFAIK,您在那里做的是将子文件夹复制到父文件夹(并像上面所说的那样复制配置)。您应该修复Spring配置。我没有看到任何配置文件的重复。唯一的区别是最终的类路径将所有文件复制到父文件夹,并且不再有子文件夹。此外,在我们的项目中,我们有大约80个spring配置XML,而且在未来几天内它肯定会增长。我需要父文件夹中的这些文件,仅用于单元/集成测试。修复每一个junit测试用例以查找我们合适的spring配置文件以及实际spring配置文件中的属性文件将非常繁琐。我们能否以任何其他方式实现这一目标?