Liquibase maven插件无法正常工作

时间:2017-03-22 18:11:10

标签: java eclipse oracle maven liquibase

我正在为Oracle 12c数据库使用Liquibase maven插件,我在运行update命令时遇到以下错误:

  

无法执行目标org.liquibase:liquibase-maven-plugin:3.4.1:update(默认)on project liquibase:设置或运行Liquibase时出错:liquibase.exception.DatabaseException:java.sql.SQLException:ORA- 28040:没有匹配的身份验证协议

我看到有关此问题的相关堆栈溢出帖子,建议更改sqlnet.ora文件,但以下命令通过使用完全相同的更改日志通过命令行完美运行:

  

java -jar~ / .m2 / repository / org / liquibase / liquibase-core / 3.5.3 / liquibase-core-3.5.3.jar --driver = oracle.jdbc.OracleDriver --classpath = / Users / nsalvi / Downloads / ojdbc6.jar --url =“fake url”--username =“假用户名”--password =“假密码”--changeLogFile = / Users / nsalvi / Downloads / liquibase-example-master-2 / src / main / resources / db / dbChangelog.xml更新

上面我引用了我本地的驱动程序类路径。

我的pom片段如下所示:

    <plugin>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>${liquibase.version}</version>
        <configuration>
            <propertyFileWillOverride>true</propertyFileWillOverride>
            <propertyFile>src/main/resources/liquibase.properties</propertyFile>
        </configuration>
        <executions>
            <execution>
                <phase>process-resources</phase>
                <goals>
                     <goal>update</goal>
                </goals>
            </execution>
         </executions>
         <dependencies>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>${oracle.version}</version>
            </dependency>
         </dependencies>
    </plugin>

当我运行maven install时,我收到了非身份验证协议错误。我的数据库更改日志如下:

liquibase.properties:

contexts: local 
changeLogFile: db/dbChangelog.xml
driver: oracle.jdbc.OracleDriver
url: fake url
username: fake username
password: fake password
verbose: true 
dropFirst: false 

dbChangelog.xml:

    <databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.8"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.8
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.8.xsd">
    <preConditions>
        <dbms type="oracle" />
        <runningAs username="fake" />
    </preConditions>

    <changeSet id="1" author="nishant">
        <preConditions onFail="WARN">
            <sqlCheck expectedResult="9">select count(*) from CA_PROJECT_T</sqlCheck>
        </preConditions>
        <comment>Comments should go after preCondition. If they are before then liquibase usually gives error.</comment>
    </changeSet>
</databaseChangeLog>

有什么我想念的吗? P.S.-当有问题的数据库是mysql而不是oracle时,maven插件工作得很好,我不认为在sqlnet.ora文件中进行更改是问题,因为从命令行运行时查询工作正常。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下阶段之一(取自maven网站): 验证 - 验证项目是否正确并且所有必要信息都可用

  
      
  • 编译 - 编译项目的源代码
  •   
  • test - 使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包代码或   部署
  •   
  • package - 获取已编译的代码并将其打包为可分发的格式,例如JAR。
  •   
  • 验证 - 对集成测试结果进行任何检查以确保符合质量标准
  •   
  • 安装 - 将软件包安装到本地存储库,以便在本地其他项目中用作依赖项
  •   
  • deploy - 在构建环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。
  •