我正在使用 Spring 和 Mockito 运行 JUnit 测试,并且我有一个具有以下配置的可注入(inject) bean:
<bean name="roleDefault" id="roleDefault" class="java.lang.String">
<constructor-arg>
<value>${database.rule}</value>
</constructor-arg>
</bean>
我的 pom.xml 在 id 为“desenvolvimento”的配置文件中具有此配置:
<database.rule>SET ROLE RO_APP IDENTIFIED BY WEBAPP</database.rule>
问题是:在 Eclipse 中运行所有测试或使用 mvn test
都不会计算 ${database.rule}
的值,导致以下结果错误:
Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "${database.rule}" [42000-165]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.getSyntaxError(DbException.java:181)
at org.h2.jdbc.JdbcConnection.checkRunOver(JdbcConnection.java:1318)
at org.h2.jdbc.JdbcConnection.translateSQL(JdbcConnection.java:1271)
at org.h2.jdbc.JdbcConnection.translateSQL(JdbcConnection.java:1187)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:265)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:98)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182)
... 75 more
为什么maven不重写database.rule
的值?
最佳答案
确保 XML 配置文件的位置包含在 pom.xml 的资源过滤器中。
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
关于java - Maven 不会重写 JUnit/Mockito 的 context.xml 上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26714607/