gpt4 book ai didi

java - 无法使用 Maven 在 Spring XML 中解析系统属性

转载 作者:行者123 更新时间:2023-11-30 06:38:56 31 4
gpt4 key购买 nike

我的应用程序需要知道可以存储其数据的目录的路径。我尝试设置一个 Java 系统属性并将该变量用作我的 Spring XML 中的占位符。

在 Eclipse 中,我将该属性添加到我的运行配置环境中,它工作得很好。 Spring 将 ${dataDir} 解析为正确的路径。

但是当我使用 Maven2 (mvn test -DdataDir=c:/data) 测试应用程序时,Spring 提示它无法解析占位符。

我的 Spring XML 如下所示:

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

xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- Allows me to use system properties in this file -->
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />

<bean id="xmlConfiguration" class="org.apache.commons.configuration.XMLConfiguration">
<constructor-arg index="0">
<value>${dataDir}/conf/config.xml</value>
</constructor-arg>
</bean>
</beans>

为什么不将该系统属性传递给 Spring?我究竟做错了什么?感谢您的任何建议!

编辑:当然,您是对的:${baseDir} 应该是 ${dataDir}。但这只是这个问题的错字,而不是真正的代码。

我之前尝试过 MAVEN_OPTS 但它也不起作用...

最佳答案

这是 Surefire 插件 2.4.3 中的一个已知错误。有关详细信息,请参阅 JIRA 问题“System properties set on the command line get clobbered”。使用以前的版本 2.4.2 代替:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- Use 2.4.2 because 2.4.3 has bug with system properties
see http://jira.codehaus.org/browse/SUREFIRE-121 -->
<version>2.4.2</version>
</plugin>
</plugins>
</build>

关于java - 无法使用 Maven 在 Spring XML 中解析系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637931/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com