Liquibase maven插件没有使用classpath属性

时间:2017-04-06 19:11:29

标签: java maven liquibase

由于某些原因,当我在我的liquibase.properties文件中设置它时,Liquibase maven插件没有使用我的属性。当我运行mvn liquibase:update时,我得到以下信息。

[INFO] there are no resolved artifacts for the Maven project.
[INFO] Parsing Liquibase Properties File
[INFO]   File: target/classes/liquibase.properties
[INFO]   'classpath' in properties file is not being used by this task.

由于这个原因,更新失败了,因为liquibase无法找到驱动程序并且无法连接到数据库。

我看到了这个问题,但他们正在使用liquibase可执行文件而不是maven。我用它作为如何使用liquibase.properties文件的例子。

Setting up Liquibase with MS-SQL Server

我看到它在异常L571到L588之间的例外,但实际的异常没有打印出来,所以我不知道错误的原因。

https://github.com/liquibase/liquibase/blob/9ae7f90a0bbbbcec229a0788afa74831db348ced/liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/AbstractLiquibaseMojo.java#L573

3 个答案:

答案 0 :(得分:2)

您必须将驱动程序jar作为依赖项放在maven POM中,而不是在属性文件中设置类路径。

请参阅documentation for the Liquibase Maven Task,尤其是描述不同JDBC依赖关系的部分。这是一个片段:

  

Maven Liquibase更新示例

     

您需要确保为您提供相关的JDBC驱动程序   Maven POM文件的依赖部分中的数据库。

     

MySQL示例:

new Promise((resolve, reject) => {
    console.log('first chain link executed')
    resolve('daniel');
}).then(name => {
    console.log('second chain link executed')
    if (name === 'daniel') {
        return new Promise(() => {
            console.log('unresolved promise executed')
        });
    }
}).then(() => console.log('last chain link executed'))




// VM492:2 first chain link executed
// VM492:5 second chain link executed
// VM492:8 unresolved promise executed

答案 1 :(得分:0)

就我而言,这是一个简单的复制和粘贴问题。

driver中的属性liquibase.properties以空格结尾。删除空格后,一切都很好。

driver: com.mysql.cj.jdbc.Driver

vs

driver: com.mysql.cj.jdbc.Driver

答案 2 :(得分:0)

answer使我朝着正确的方向前进。就我而言,那是我需要声明Maven资源。

<build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
</build>

希望有帮助!