2013-10-17 70 views
0

我正在使用maven build助手自動將integration-test/javaintegration-test/resources文件夾添加到我的項目classpath。當我在Eclipse中使用JUnit運行我的測試時效果很好,但是當我運行Web項目時,Tomcat總是拿起測試資源而不是生產測試資源,但遇到了問題。maven build助手插件問題

我的項目結構是這樣的:

DaoProject 
    src/main/resources/datasource.properties 
    src/main/resources/spring-data.xml 
    src/main/java/.... 
WebProject 
    src/main/resources/appContext.xml 
    src/integration-test/java/com/mypkg/controller/MyControllerIT.java 
    src/integration-test/resources/datasource.properties 

appContext.xml進口spring-data.xml這反過來負載datasource.properties作爲propterties源佔位符。

appContext.xml內容:

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


<context:annotation-config /> 
<tx:annotation-driven/> 
<context:component-scan base-package="com.mypkg" /> 
<mvc:annotation-driven /> 
<mvc:resources mapping="/resources/**" location="/resources/" /> 
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" 
    p:defaultEncoding="UTF-8"> 
     <property name="basenames"> 
     <array> 
     <value>messages</value> 
     </array> 
     </property> 
</bean> 
<import resource="classpath:datasource.xml" /> 

datasource.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation= 
"http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd" 
    > 
<context:property-placeholder location="classpath:datasources.properties"/> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 
    <property name="url" value="${config.db.url}" /> 
    <property name="username" value="${config.db.username}" /> 
    <property name="password" value="${config.db.password}" /> 

的pom.xml:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <id>add-integration-test-sources</id> 
      <phase>generate-test-sources</phase> 
      <goals> 
       <goal>add-test-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
        <source>src/integration-test/java</source> 
       </sources> 
      </configuration> 
     </execution> 
     <execution> 
      <id>add-integration-test-resources</id> 
      <phase>generate-test-resources</phase> 
      <goals> 
       <goal>add-test-resource</goal> 
      </goals> 
      <configuration> 
       <resources> 
        <resource> 
         <directory>src/integration-test/resources</directory> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

你還可以發佈appContext.xml和spring-data.xml嗎? –

+0

我會看到更多用於發佈他的'pom.xml'。 –

+0

添加Pom.xml,謝謝! – dnang

回答

0

我認爲問題出在您加載datasource.properties文件的方式。嘗試指定在PropertyPlaceholderConfigurer的位置屬性的完整路徑:

<context:property-placeholder location="classpath:src/main/resources/datasources.properties"/>  

希望這有助於。

+0

謝謝,但其實我沒有加載錯誤的datasource.xml的問題,因爲我只有一個datasource.xml。這是我有問題的datasource.properties,因爲我有兩個同名的屬性文件。 – dnang

+0

哦,我的錯。但同樣的事情也適用於此。指定整個路徑。我會編輯我的答案。 –

+0

我知道,但問題是我想使用我的測試屬性文件。如果我使用您建議的完整路徑,那麼在運行我的測試類(例如MyControllerIT.java)時,Eclipse將不會提取測試資源, – dnang