我有以下蚂蚁配置:
<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”参数。我在这个蚂蚁任务定义中没有看到任何地方我可以在哪里放置这样的路径。我怎样才能做到这一点 ?我做错了什么?
答案 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