2015-02-07 76 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