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

时间:2015-02-19 09:21:06

标签: ant liquibase ojdbc

我有以下蚂蚁配置:

<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 JDBC驱动程序的完全限定类名。

我认为这个错误可能会上升,因为我没有将classpath放到我的ojdbc.jar文件中的地方。我可以从命令行运行此更新命令,但是我可以指定指向我的ojdbc.jar文件的“classpath”参数。我在这个蚂蚁任务定义中没有看到任何地方我可以在哪里放置这样的路径。我怎样才能做到这一点 ?我做错了什么?

1 个答案:

答案 0 :(得分:1)

<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