我正在處理包含服務和集成測試模塊的多模塊項目。 在服務模塊中,根據Spring greenhouse提供了一些用於某些重置密碼功能的服務,該服務正在使用預期將在初始化時加載的模板文件。在試圖解決這個問題,我稍微改變基礎上,加載文件之類的初始化,並把它搬到xml配置:在IT模塊中使用時,依賴項模塊無法加載資源
<bean id="resetPasswordMailMessageConverter" class="com.myapp.service.reset.ResetPasswordMailMessageConverter">
<constructor-arg name="resource">
<value>classpath*:**/spring/reset-password.st</value>
</constructor-arg>
</bean>
服務工作正常,一旦部署,並在Tomcat中使用,但也有問題,當集成測試被執行:Unable to read template resource class path resource [classpath*:**/spring/reset-password.st]
我把這個文件放在serviceModule/META-INF/spring/
和integrationTestsModule/META-INF/spring/
這兩個地方但仍然找不到。
我把一些代碼,無論是在服務和在我出口的ClassLoader.getSystemResources("META-INF")
結果綜合測試,並注意到,在這兩種情況下integrationModule/target/test-classes/META-INF
和.m2/repository/../serviceModule.jar!META-INF
都包含在導出的路徑和文件包含兩個META-INF/spring/
,但沒有發現裏面。
我也嘗試將文件保存在與轉換器相同的包中,並初始化轉換器的資源爲new ClassPathResource("reset-password.st", getClass().getClassLoader())
或new ClassPathResource("reset-password.st")
但無效。
該項目的結構是mainModule
- > [mainSubmoduleA
- > [serviceModule
,integrationTestsModule
,等],mainSubmoduleB
[其他模塊]]
任何想法?
有項目結構的基本佈局的POM文件
配件:
主:
...........
<groupId>com.myapp</groupId>
<artifactId>mainModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
.............
<modules>
<module>mainSubmoduleA</module>
<module>mainSubmoduleB</module>
</modules>
mainSubmoduleA:
..............
<parent>
<groupId>com.myapp</groupId>
<artifactId>mainModule</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
.........
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.mainsuba</groupId>
<artifactId>mainSubmoduleA</artifactId>
<packaging>pom</packaging>
<name>mainSubmoduleA</name>
..........
<modules>
<module>subModuleAA</module>
</modules>
...............
subModuleAA:
<parent>
<groupId>com.myapp.mainsuba</groupId>
<artifactId>mainSubmoduleA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.mainsuba.subaa</groupId>
<artifactId>subModuleAA</artifactId>
<packaging>pom</packaging>
<name>subModuleAA</name>
..........
<modules>
<module>service</module>
<module>web</module>
<module>integration</module>
</modules>
服務:
<parent>
<groupId>com.myapp.mainsuba.subaa</groupId>
<artifactId>subModuleAA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.mainsuba.service</groupId>
<artifactId>service</artifactId>
<packaging>jar</packaging>
<name>service</name>
網站:
<parent>
<groupId>com.myapp.mainsuba.subaa</groupId>
<artifactId>subModuleAA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.mainsuba.web</groupId>
<artifactId>web</artifactId>
<packaging>war</packaging>
<name>web</name>
整合:
<parent>
<groupId>com.myapp.mainsuba.subaa</groupId>
<artifactId>subModuleAA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>integration</artifactId>
<packaging>jar</packaging>
<name>integration</name>
<description>Integration Tests</description>
你能告訴您的文件夾佈局和POM文件... – khmarbaise 2015-02-08 07:56:52
@khmarbaise我豐富了描述,希望它有所幫助.. – Chris 2015-02-08 21:02:14