多模块Spring项目:在test中覆盖资源文件

时间:2018-06-06 20:22:22

标签: java spring maven classloader

我有一个具有以下结构的Spring项目:

.
├── pom.xml
├── core-module
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   └── resources
│       │       ├── applicationContext.xml
│       │       └── file.xml
│       └── test
│           ├── java
│           └── resources
│               ├── file.xml
│               └── foo.xml
└── web-module
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        └── test
            └── java

在我的applicationContext.xml文件中,我有以下导入: <import resource="classpath:file.xml" />

在制作中我想使用file.xml中定义的main,在测试期间我想使用test文件夹中定义的那个;实际上,当我运行core-module的测试时,会发生什么。

但是,当我运行web-module的测试时,情况并非如此,所使用的文件是main文件夹中的一个。 如何表现我想要的?

一些注意事项:

  • web-moduletest-jar的{​​{1}}依赖关系,因此包含测试资源;
  • 如果我进入core-module目录,targetfile.xml文件夹中的好文件;
  • 在运行test-classes测试时,如果我在Spring代码中放置断点,那么web-module上的getClass().getClassLoader().getResource()将返回file.xml中定义的断点,但如果我运行main文件上的相同方法,它返回foo.xml文件夹中唯一可用的方法,因此两个文件似乎都存在,但就像test接管main一样{1}}资源......

谢谢!

0 个答案:

没有答案