2015-02-07 55 views
0

我正在處理包含服務和集成測試模塊的多模塊項目。 在服務模塊中,根據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 - > [serviceModuleintegrationTestsModule,等],mainSubmoduleB [其他模塊]]

任何想法?

有項目結構的基本佈局的POM文件 enter image description here

配件:

主:

........... 

<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> 
+0

你能告訴您的文件夾佈局和POM文件... – khmarbaise 2015-02-08 07:56:52

+0

@khmarbaise我豐富了描述,希望它有所幫助.. – Chris 2015-02-08 21:02:14

回答

0

克里斯,

嘗試設置資源值沒有任何螞蟻式通配符匹配器。即:在通配符限制

<value>META-INF/spring/reset-password.st</value> 

更多信息可以在這裏找到:Other notes relating to wildcards

+0

感謝@activis-georgiadis,它看起來像我試過幾乎所有除了那:) – Chris 2015-02-09 23:39:03