2017-02-23 58 views
0

我試圖運行一個ant腳本來通過liquibase部署更改。Liquibase ANT Build.xml Oracle驅動程序

<project name="Example" xmlns:liquibase="antlib:liquibase.integration.ant"> 

    <taskdef 
     resource="liquibase/integration/ant/antlib.xml" 
     uri="antlib:liquibase.integration.ant"> 

     <classpath path="C:\liquibase\lib\liquibase\"/> 

    </taskdef> 

    <property name="db.changelog.file" value="C:\projects\lbdemo\trunk\db_v4.xml"/> 
    <property name="database.url" value="jdbc:oracle:thin:@mydb:1521:ORCL"/> 
    <property name="database.username" value="myuser"/> 
    <property name="database.password" value="mypassword"/> 
    <property name="database.driver" value="oracle.jdbc.OracleDriver"/> 

    <liquibase:database id="my-database" driver="${database.driver}" url="${database.url}" user="${database.username}" password="${database.password}"/> 

    <liquibase:updateDatabase databaseref="my-database" changelogfile="${db.changelog.file}"/> 

</project> 

安裝路徑:

  • Liquibase安裝在:C:\ liquibase
  • JDBC驅動位於:C:\ liquibase \ ojdbc7.jar

  • Ant安裝在:C:\ apache-ant-1.10.1

  • 我複製在liquibase.jar爲:C:\ Apache的ANT-1.10.1 \ lib中
  • 我的Ant構建文件:C:\項目\ lbdemo \幹線\ build.xml文件
  • 我更改文件:C:\項目\ lbdemo \幹線\ db_v4.xml

測試

  • 我能夠成功運行liquibase更新使用Windows命令行我更改文件db_v​​4.xmls。

  • 我能夠運行ANT build.xml文件,如果我從它刪除所有liquibase標記。

錯誤:

運行上面的ANT構建時,我得到下面的錯誤:

C:\projects\lbdemo\trunk>ant

C:\projects\lbdemo\trunk\build.xml [liquibase:updateDatabase] Starting Liquibase.

BUILD FAILED C:\projects\lbdemo\trunk\build.xml:15: Class not found: oracle.jdbc.OracleDriver

Total time: 1 second

我怎麼能在螞蟻在甲骨文駕駛員坐在告訴liquibase?

我提到:http://www.liquibase.org/documentation/ant/index.html

+0

您需要將JDBC驅動程序包含在Liquibase任務的'classpath'中(在'taskdef'內) –

+0

謝謝,這有幫助。我包含一個路徑標記並將其引用到updateDatabase標記中。 –

回答

0

更簡單的方法來做到這一點是把你的所有要求(liquibase.jar和ojdbc7.jar)庫到一個目錄,使用路徑ID引用它們。

<path id="liquibaseClasspath"> 
    <fileset dir="C:\projects\lbdemo\trunk\lib" includes="*.jar" /> 
</path> 
<target name="Upgrade_db"> 
    <echo message="Upgrading DataBase" /> 
    <updateDatabase changeLogFile="C:\projects\lbdemo\trunk\db_v4.xml" driver="${database.driver}" url="${database.url}" username="${database.username}" password="${database.password}" classpathref="liquibaseClasspath" /> 
</target> 

你也可以提所有的目錄位置在一個文件中,並導入該文件在你的Ant文件。

0

這裏的螞蟻的build.xml運行成功。 ojdbc驅動程序和liquibase jar都位於C:\ liquibase \中;這是我在updateDatabase標籤參考:liquibase:updateDatabase classpathref =「driver.classpath」

<project name="Example" xmlns:liquibase="antlib:liquibase.integration.ant"> 

    <path id="driver.classpath"> 
    <filelist dir="C:\liquibase\" > 
     <file name="ojdbc7.jar" /> 
     <file name="liquibase.jar" /> 
    </filelist> 
    </path> 

    <property name="db.changelog.file" value="C:\projects\lbdemo\trunk\db_v4.xml"/> 
    <property name="database.url" value="jdbc:oracle:thin:@mydb.rds.amazonaws.com:1521:ORCL"/> 
    <property name="database.username" value="myuser"/> 
    <property name="database.password" value="mypassword"/> 
    <property name="database.driver" value="oracle.jdbc.OracleDriver"/> 

    <liquibase:database id="my-database" driver="${database.driver}" url="${database.url}" user="${database.username}" password="${database.password}"/> 

    <liquibase:updateDatabase classpathref="driver.classpath" databaseref="my-database" changelogfile="${db.changelog.file}"/> 

</project>