在部署JDBC.Properties之后,还没有Spring发现.Jar

时间:2011-01-28 12:41:31

标签: java spring ant properties classpath

最近出现了将数据库设置外包给Spring applicationContext.xml的要求。因此,我们希望在构建的jar之外有一个jdbc.properties文件,因此用户可以轻松更改jdbc.settings。到目前为止,所有这些都在eclipse工作区中运行良好,但是只要我使用ant构建分发版,applicationContext.xml就不再找到jdbc.properties了。

applicationContext.xml如下所示:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <value>classpath:jdbc.properties</value>
  </property>
</bean>

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

在eclipse中我使用了以下类路径,因此jdbc.properties(放置在eclipse项目文件夹“config”中)将被找到:

classpath文件:

<classpath>
        ...
 <classpathentry kind="src" path="config"/>
        ...
</classpath>

直到这里一切正常。现在我用Ant构建项目。创建了project.jar,并在其旁边有一个单独的配置文件夹以及其中的jdbc.properties文件。在Manifest.mf中有一个条目:

config/jdbc.properties

但是当我现在启动服务器时,找不到jdbc.properties。当我将Manifest.mf条目更改为:

时,我注意到了
config/.

再次正常工作。但我不明白为什么这是不同的。谁能解释我这种行为?或者甚至可能知道我做错了什么?显然我必须以某种方式更改Ant文件,所以他只是在清单文件中添加了config文件夹,而不仅仅是jdbc.properties文件本身?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

类路径包含jar文件和包含类文件和其他资源的目录的位置。您应该在类路径中指定包含属性文件的目录的路径,而不是属性文件本身的路径。也就是说,您的清单条目应该是'config'。

答案 1 :(得分:0)

解决方案是在Ant-buildscript中定义一个classpathelement。

<classpath>
  <pathelement location="${dir.build}/config/."/>
<classpath>

不幸的是,我仍然不知道,为什么直接引用该文件也没有解决这个问题。