ORA-01882:在Liquibase Gradle插件中找不到时区区域

时间:2019-02-27 15:05:34

标签: oracle gradle liquibase ojdbc

在我们的项目中,我们使用Liquibase gradle插件。最近,我们将ojdbc8插件更新为版本18.3.0.0。不幸的是,这导致我们的Liquibase任务失败,并出现ORA-01882:找不到时区区域。我找到了解决此错误的方法(例如:ORA-01882: timezone region not found),但我不知道如何将这个-Duser.timezone或-Doracle.jdbc.timezoneAsRegion属性添加到gradle任务中。我尝试了不同的方法,但没有成功。

这是我们build.gradle的一些关键部分的样子:

liquibase {
    activities {
        oracle {
            changeLogFile "$liquibasePath/db.changelog-master.xml"
            driver liquibaseProps['oracle.driver']
            url "jdbc:oracle:thin:@${liquibaseProps['oracle.ip.port']}:${liquibaseProps['oracle.schema']}"
            username liquibaseProps['oracle.username']
            password liquibaseProps['oracle.password']
            outputDefaultSchema false
            outputDefaultCatalog false
        }
    }
}


def generate(taskName, taskDescription, generateCommand) {
    project.task(taskName, type: LiquibaseTask) {
        group = 'Liquibase'
        description = taskDescription

        inputs.property('databases', getRunList())
        inputs.dir liquibasePath
        outputs.dir sqlScriptsPath


        doLast {
            new LiquibaseSqlCleanupTask(sqlScriptsPath).execute()
        }
    }
}

1 个答案:

答案 0 :(得分:1)

运行gradle时,需要将其设置为系统属性。该文档位于https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties,但这是最相关信息的副本/粘贴:

  

使用-D命令行选项,可以将系统属性传递给   运行Gradle的JVM。 gradle命令的-D选项具有   与java命令的-D选项相同。

     

您还可以使用以下命令在gradle.properties文件中设置系统属性:   前缀systemProp。

因此您可以在项目的根目录中创建一个gradle.properties文件,其内容如下:

systemProp.oracle.jdbc.timezoneAsRegion=false