4
votes

I have a multimodule maven project with parent pom file and two modules (named "app" and "modules"). In test resources of "app" I have a spring config with the following content:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <import resource="file:src/main/webapp/WEB-INF/spring-config/security.xml"/>
    <import resource="file:src/main/webapp/WEB-INF/spring-config/mvc-servlet.xml"/>
    <import resource="file:src/main/webapp/WEB-INF/spring-config/common.xml"/>

    <import resource="db-test.xml"/>
    <import resource="utilsContext.xml"/>
</beans>

IntelliJ IDEA 13 and 14 cannot find files which are imported as resources in my case (security.xml, mvc-servlet.xml and common.xml) and so IDEA cannot resolve injection of objects from spring context. If I change path to file:app/src/main/webapp/WEB-INF/spring-config/security.xml then everything works fine, but it crashes maven tests.

Please, show me how to config IntelliJ IDEAs spring files resolutions.

1
As they shouldn't... At runtime the path src/main/webapp doesn't exists this is only available at build time. Just use /WEB-INF/spring-config (no file: prefix) instead. If you want them to be available for tests I suggest moving those files out of the WEB-INF directory to somewhere on the classpath i.e. src/main/resources/META-INF for instance. Then you could do classpath:/META-INF/spring-config/security.xml etc.M. Deinum
@M.Deinum thank you! I've moved my spring-config folder to resource folder and used classpath:/spring-config/security.xml refs. All my scenarios works! Can you write an answer based on this comment?Vitalii Ivanov

1 Answers

5
votes

At runtime the path src/main/webapp doesn't exists this is only available at build time. Just use /WEB-INF/spring-config (no file: prefix) instead.

If you want them to be available for tests I suggest moving those files out of the WEB-INF directory to somewhere on the classpath i.e. src/main/resources/META-INF for instance. Then you could do classpath:/META-INF/spring-config/security.xml