【问题标题】:Liquibase ANT Build.xml Oracle DriverLiquibase ANT Build.xml Oracle 驱动程序
【发布时间】:2017-09-22 13:05:23
【问题描述】:

我正在尝试运行一个 ant 脚本来通过 liquibase 部署更改。

<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:\projects\lbdemo\trunk\build.xml
  • 我的更改文件:C:\projects\lbdemo\trunk\db_v4.xml

测试

  • 我能够使用 Windows 命令行使用我的更改文件 db_v4.xmls 成功运行 liquibase 更新。

  • 如果我从 ANT build.xml 文件中删除所有 liquibase 标签,我就可以运行它。

错误:

运行上述 ANT 构建时出现以下错误:

C:\projects\lbdemo\trunk>蚂蚁

C:\projects\lbdemo\trunk\build.xml [liquibase:updateDatabase] 开始 Liquibase。

构建失败 C:\projects\lbdemo\trunk\build.xml:15:找不到类: oracle.jdbc.OracleDriver

总时间:1秒

如何告诉 ant 中的 liquibase,Oracle 驱动程序位于何处?

我指的是:http://www.liquibase.org/documentation/ant/index.html

【问题讨论】:

  • Liquibase 任务需要在classpath 中包含JDBC 驱动程序(在taskdef 内)
  • 谢谢你,这有帮助。我包含了一个路径标记并在 updateDatabase 标记中引用了它。

标签: ant liquibase


【解决方案1】:

更简单的方法是将所有必需的(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 文件中。

【讨论】:

    【解决方案2】:

    这里是成功运行的ant 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>
    

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      相关资源
      最近更新 更多