【发布时间】:2020-08-18 03:59:07
【问题描述】:
我有这个主变更日志:
databaseChangeLog:
- includeAll:
path: db/changelog/changes/
当测试通过 intellij 运行时,一切运行顺利,但是当我尝试通过 maven 运行时,它失败并出现以下错误:
at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:83)
at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:217)
at liquibase.Liquibase.update(Liquibase.java:190)
at liquibase.Liquibase.update(Liquibase.java:179)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:366)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:314)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)
... 82 common frames omitted
Caused by: liquibase.exception.SetupException: Could not find directory or directory was empty for includeAll 'db/changelog/changes/'
当我一一包含更新日志文件时,例如
databaseChangeLog:
- include:
file: db/changelog/changes/001-20200503_1300-Initial.yml
- include:
file: db/changelog/changes/liquibase-diff-changeLog.yml
intellij 和 maven 一切运行顺利。这是我的插件:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase-maven-plugin.version}</version>
<configuration>
<propertyFileWillOverride>true</propertyFileWillOverride>
<propertyFile>liquibase.properties</propertyFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate5</artifactId>
<version>${liquibase-hibernate5.version}</version>
</dependency>
</dependencies>
<goals>
<goal>update</goal>
</goals>
</plugin>
</plugins>
</pluginManagement>
还有 liquibase.properties
url= jdbc:postgresql://localhost:5432/doctor-service
username= verality
password= verality
driver= org.postgresql.Driver
changeLogFile=db/changelog/db.changelog-master.yaml
diffChangeLogFile=src/main/resources/db/changelog/changes/liquibase-diff-changeLog.yml
outputChangeLogFile=src/main/resources/db/changelog/changes/liquibase-new-changeLog.yml
referenceUrl=hibernate:spring:io.happyharbor.verality?dialect=org.hibernate.dialect.PostgreSQLDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
我尝试删除surefire插件,但没有区别,所以mavel-compile-plugin似乎应该承担责任。请注意,此问题仅在我通过 Maven 运行测试时才会出现。如果我部署,一切都会再次顺利进行。 似乎这在早期版本中是已知的,但现在应该已经修复了。我错过了什么?
【问题讨论】:
标签: maven liquibase maven-compiler-plugin