我有一个使用Maven设置的多模块Spring项目:
my-root (pom)
- my-logic
- my-webapp (depending on my-logic)
- my-consoleapp (depending on my-logic)
Run Code Online (Sandbox Code Playgroud)
我的测试类继承AbstractTransactionalJUnit4SpringContextTests并@ContextCofiguration用于设置ApplicationContext.
例如Spring Controller的测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:applicationContext-logic-test.xml",
"classpath:applicationContext-web-test.xml"})
public class ControllerTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private ApplicationContext applicationContext;
...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,每个模块都有一个配置XML.我有单独的配置用于测试,驻留在每个模块的测试/资源中(另外还有后缀"-test").如果我在Eclipse中运行JUnit测试,这一切都有效(类编译,运行并且JUnit测试成功).
现在我的问题:使用Maven运行测试将无法正常工作!(例如,使用"Run As">"Maven install" my-root(我使用m2eclipse)).具体来说,它将抛出以下异常:
java.io.FileNotFoundException:类路径资源[applicationContext-logic-test.xml]无法打开,因为它不存在
似乎Maven没有将文件添加my-logic/src/test/resources到运行单元测试时设置的类路径中my-webapp.
我该如何解决这个问题?
我是Maven的新手,我刚刚尝试建立我的第一个项目树.我很难理解两种选择之间的区别:
我有jar和war项目(每个两个)我想捆绑.传统上我只是创建一个耳朵项目,其中所有四个都是依赖项.
现在我读到了poms的聚合,我不知道该怎么做(参见http://maven.apache.org/pom.html#Aggregation).我应该用这四个项目创建一个聚合的POM吗?
我想基本上我的问题是:如果依赖项是我自己的"项目"之一,那么模块和依赖项之间的最大区别是什么.