Spring with Maven:Maven找不到我的资源

时间:2013-03-03 17:52:12

标签: java spring maven

我在这里很新,我不想诉诸问,但似乎我别无选择。

我正在编写自动化测试,不久前我发现了Spring和Dependancy Injection及其所有优点。我在测试中使用它作为我的主要数据提供者(虽然我的一位同事不同意这种用法,我不明白为什么),像这样:

/src/test/java/automation/data列表:

@ContextConfiguration("classpath:/spring/surveyFlows.xml")
public class SurveyDataProvider
{

    @Autowired
    private List<Survey> allSurveys;

    public List<Survey> getAllSurveys()
    {
        return allSurveys;
    }
    public SurveyDataProvider()
    {
        TestContextManager testContextManager = new TestContextManager(getClass());
        try
        {
            testContextManager.prepareTestInstance(this);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

当然我已经在里面找到了我的XML /src/test/resources/spring/

有趣的是,如果我使用IntelliJ运行它,这可以正常工作,但maven拒绝运行,给我那个该死的错误:

  

引起:org.springframework.beans.factory.BeanDefinitionStoreException:IOException从类路径资源[spring / surveyFlows.xml]解析XML文档;嵌套异常是java.io.FileNotFoundException:类路径资源[spring / surveyFlows.xml]无法打开,因为它不存在

我在网上看了好几个小时,尝试各种各样的事情:

  • 将资源移至/src/main
  • 将资源目录放在pom.xml

......没有骰子。

所以我有点卡在这里,而且我正在认真考虑用硬编码的参数恢复旧的Java风格。

如果有人有线索......

2 个答案:

答案 0 :(得分:2)

这对我们有用。如果您找到替代方式,请告诉我。

<build>
    <!--Your other configuration -->

    <testResources>
        <!-- Not sure if including resource from main is needed -->
        <testResource>
            <directory>${project.basedir}/src/main/resources</directory>
        </testResource>

        <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
        </testResource>
    </testResources>
</build>

答案 1 :(得分:1)

我使用spring test classes和junit。确保将正确的依赖项放在pom.xml中:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>3.2.1.RELEASE</version>
</dependency>

我用以下内容注释测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:test-context.xml")

我的test-context.xml位于:src / test / resources / test-context.xml

那就是它!使用此配置工作!