引起:java.lang.RuntimeException:无法运行Liquibase,liquibase.datasource未设置

时间:2016-06-24 09:55:18

标签: java spring hibernate maven liquibase

在我的pom.xml中配置liquibase之后。我还在我的资源文件夹,changelog.xml中添加了这些文件,这是内容

<databaseChangeLog xmlns='http://www.liquibase.org/xml/ns/dbchangelog'
      xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      xsi:schemaLocation='http://www.liquibase.org/xml/ns/dbchangelog
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd'>
      <changeSet id="001" author="Dev">
        <sql>
          ALTER TABLE book ADD COLUMN address VARCHAR(1024);
        </sql>
      </changeSet>
    </databaseChangeLog>

我还在我的资源文件夹中添加了这个文件liquibase.properties,这是内容

contexts: ${liquibase.contexts} 
changeLogFile: src/main/resources/changelog.xml 
driver: ${jdbc.driverClassName} 
url: ${jdbc.url} 
username: ${jdbc.username} 
verbose: true 
dropFirst: false

我也像这样配置了我的pom.xml

<plugin>
           <groupId>org.liquibase</groupId>
           <artifactId>liquibase-maven-plugin</artifactId>
           <version>3.0.5</version>
           <configuration>                  
              <propertyFile>src/main/resources/liquibase.properties</propertyFile>
           </configuration>                
           <executions>
             <execution>
               <phase>process-resources</phase>                                                                  
               <goals>
                 <goal>update</goal>
               </goals>
             </execution>
           </executions>

        </plugin>

当我启动项目时,我从tomcat

收到此错误
Caused by: java.lang.RuntimeException: Cannot run Liquibase, liquibase.datasource is not set

请问可能出错?

1 个答案:

答案 0 :(得分:0)

如果在liquibase.properties文件中使用占位符,则还必须在pom.xml中使用以下元素启用资源过滤:

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

(如果你不这样做:liquibase.properties将保留像

这样的东西
url: ${jdbc.url}

当然,这不是一个有效的网址。)