PropertyPlaceholderConfigurer可以从Maven命令行运行,但不能从Eclipse运行吗?

时间:2010-06-10 05:05:15

标签: eclipse spring configuration maven-2 junit

我将Eclipse配置为使用外部maven实例。尽管如此,我有一个从命令行运行良好的集成测试,但是在Eclipse中失败了。该错误是类Spring应用程序上下文bean错误:

Cannot convert value of type [java.lang.String] to required type

罪魁祸首是使用PropertyPlaceholderConfigurer设置属性值的bean。

<!-- property settings for non-JNDI database connections -->
<bean id="placeholderConfigUuid" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="location" value="classpath:database.properties" />
    <property name="placeholderPrefix" value="$DS{" />
</bean>

我知道哪个bean失败了,因为它出现在堆栈跟踪中,因为当我用静态值替换$ DS {hibernate.dialect}时,它可以工作。

编辑:这是使用属性值的地方:

<bean id="myTestLocalEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="myapp-core" />
    .......ommitted for brevity.......
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <!-- The following use the PropertyPlaceholderConfigurer but it doesn't work in Eclipse -->
            <property name="database" value="$DS{hibernate.database}" />
            <property name="databasePlatform" value="$DS{hibernate.dialect}" />
        </bean>
    </property>
</bean>

我有两个问题:

1)由于M2Eclipse使用与命令行相同的Maven设置,为什么一个工作而另一个工作失败? 2)如何解决这个问题?我非常希望能够根据需要在Eclipse中运行单个jUnit测试。

2 个答案:

答案 0 :(得分:2)

  • 过滤是否适用于Eclipse下的“常规”单元测试?
  • m2eclipse是否配置为处理资源并测试资源更改资源:

alt text http://www.imagebanana.com/img/rwd919ek/screenshot_008.png

  • 有没有什么特别要提及的集成测试(从Maven的角度来看)?

答案 1 :(得分:0)

你正在使用M2Eclipse(最新版本?)你在Eclipse中使用Maven 3,但我假设你在命令行上使用Maven 2(2.2.1?)...另一方面你是说你的“集成测试”是在命令行上运行的(构建一个环境等),但是你想从Eclipse中运行“单元测试”...单元测试不同于集成测试......而且我我并不感到惊讶你的集成测试不适用于Eclipse ...如果我们看到使用的POM和代码,我们可以说更多吗?