如何在 Liquibase ant 配置中指定 oracle odbjc.jar

How to specify oracle odbjc.jar in Liquibase ant configuration

我有以下蚂蚁配置:

<project name="pcebuild" basedir="." default="updateDatabase" xmlns:liquibase="antlib:liquibase.integration.ant" >
    <taskdef resource="liquibase/integration/ant/antlib.xml" uri="antlib:liquibase.integration.ant">
        <classpath path="c:\Users\artur.skrzydlo\Documents\liquibase-3.3.2-bin\liquibase.jar"/>
    </taskdef> 

  <property name="liquiChangeLogFile" value="${basedir}/liquibase/db.changelog-master.xml"/>
  <property name="db.driver" value="oracle.jdbc.OracleDriver"/>
  <property name="db.url" value="jdbc:oracle:thin:@websph:1521:XE"/>

  <target name="updateDatabase" description="Updates database with new changes using Liquibase">
    <liquibase:updateDatabase  changeLogFile="${liquiChangeLogFile}" >
        <liquibase:database  driver="${db.driver}" url="${db.url}" user="${db.user}" password="${db.pasword}"/>
    </liquibase:updateDatabase>
  </target>

 </project>

在 运行 执行此任务后我收到错误消息:

 Class not found: oracle.jdbc.OracleDriver

根据文档:

driver The fully qualified class name of the JDBC driver.

我想这个错误可能会增加,因为没有地方可以放置我的 ojdbc.jar 文件的类路径。我可以从命令行 运行 这个更新命令,但是我可以指定 "classpath" 指向我的 ojdbc.jar 文件的参数。而且我在这个 ant 任务定义中看不到任何地方,我可以在哪里放置这样的路径。我怎样才能做到这一点 ?我做错了什么?

在您的 <liquibase:updateDatabase> 标签中,您可以有一个 classpathref 属性。所以我有这样的东西:

<path id="driver.classpath">
    <filelist files="${classpath}" />
</path>
...
<liquibase:updateDatabase 
        databaseref="main-schema" 
        changelogfile="${changeLogFile}"
        classpathref="driver.classpath"
        logLevel="debug"
    >
...

并且 ${classpath} 是 Ant 属性,在属性文件中设置:

classpath: /Users/me/place/lib/classes12.jar