当前位置: 首页 > 知识库问答 >
问题:

spring boot无法在gradle版本上加载liquibase更改

彭风华
2023-03-14

我使用的是Spring boot 1.1.1。我有一个H2数据库,它是在启动时创建的。当我从IntelliJ运行我的主类时,一切都很好。当我运行“gradle build test”时,我的集成测试会出错:

Caused by: java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.yaml] (please add changelog or check your Liquibase configuration)
    at org.springframework.util.Assert.state(Assert.java:385)
    at org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.checkChangelogExists(LiquibaseAutoConfiguration.java:80)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)

这是我的gradle文件:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'maven'

project.ext {
    springBootVersion = '1.1.1.RELEASE'
}

buildscript {
    repositories {
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
        maven { url "http://repo.spring.io/libs-milestone" }
        maven { url "http://repo.spring.io/libs-snapshot" }
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.0.1.RELEASE")

    }
}

jar {
    baseName = 'my-app'
    version = '0.1.0'
}

repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/libs-milestone" }
    maven { url "https://repository.jboss.org/nexus/content/repositories/releases" }
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
    maven { url "http://repo.spring.io/snapshot" }
    maven { url 'http://repo.spring.io/milestone' }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
    compile("org.springframework.boot:spring-boot:1.0.1.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion")
    compile("org.springframework.security:spring-security-web:4.0.0.M1")
    compile("org.springframework.security:spring-security-config:4.0.0.M1")
    compile('org.thymeleaf.extras:thymeleaf-extras-springsecurity3:2.1.1.RELEASE')

    compile("org.springframework:spring-orm:4.0.0.RC1")
    compile("org.hibernate:hibernate-core:4.3.4.Final")
    compile("org.hibernate:hibernate-entitymanager:4.3.4.Final")
    compile("org.hibernate:hibernate-validator")

    compile("com.h2database:h2:1.3.172")
    compile("joda-time:joda-time:2.3")
    compile("org.codehaus.groovy.modules.http-builder:http-builder:0.7.1")
    compile('org.codehaus.groovy:groovy-all:2.2.1')
    compile('org.jadira.usertype:usertype.jodatime:2.0.1')
    compile("org.liquibase:liquibase-core")

    testCompile('org.spockframework:spock-core:1.0-groovy-2.0-SNAPSHOT') {
        exclude group: 'org.codehaus.groovy', module: 'groovy-all'
    }

    testCompile('org.spockframework:spock-spring:1.0-groovy-2.0-SNAPSHOT') {
        exclude group: 'org.spockframework', module: 'spock-core'
        exclude group: 'org.spockframework', module: 'spring-beans'
        exclude group: 'org.spockframework', module: 'spring-test'
        exclude group: 'org.codehaus.groovy', module: 'groovy-all'
    }
    testCompile("org.springframework.boot:spring-boot-starter-test:$springBootVersion")
    testCompile('org.codehaus.groovy.modules.http-builder:http-builder:0.7+')
    testCompile("junit:junit")
}

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

我在src/main/资源和src/test/资源中都有一个application.properties文件,其中包含以下条目:

liquibase.changeLog=classpath:db/changelog/db.changelog-master.xml

然后在src/main/资源/db/变更日志和src/test/资源/db/变更日志中,我有一个db.changelog-master.xml当我构建项目时,我看到构建/资源/测试和构建/资源/main有application.properties,db/变更日志/db.changelog-master.xml。

这似乎是一个类路径问题,因为它在IntelliJ而不是命令行中工作。有谁能告诉我我可能做错了什么?

共有2个答案

赵浩邈
2023-03-14

我可以在测试类路径上看到spock,所以可能它仍然没有使用正确的测试上下文加载程序(我希望他们能够解决这个问题)。您需要将加载程序或初始值设定项手动添加到您的上下文配置中。这里是文档。

艾成益
2023-03-14

我想在这里添加我的修复程序(即使我的构建是Maven)。我的application.properties在我的根目录中,但它找不到从根目录指向的db.changelog.xml类路径。它需要类路径来自我的/Resources目录。也许我的application.properties在一个非常规的位置,但我认为它应该放在根目录中。

虽然我的application.properties的实际路径是这样的:
liquibase.change-log=classpath:/src/main/Resources/liquibase/db.changelog.xml

它需要这个路径来找到它:
liquibase。更改日志=类路径:/liquibase/db。变更日志。xml

 类似资料:
  • 对Liquibase变更集使用SQL样式方法(这是我们的codestyle,我们不使用XML),我试图使用以下SQL变更集加载CSV文件 SQL 主变更日志文件引用2021目录,其中SQL和CSV文件存在于同一目录中。 我尝试了以下其他路径,但它们仍然产生一个FileNotFoundException prices.csv web-inf/classes/liquibase/changelogs/

  • 谷歌浏览器正在添加一个后缀。映射到我的应用程序的那些URL,我在呈现主干UI时遇到问题 我看到控制台错误: DevTools未能加载源地图:无法加载内容.../stest-Content/js/第三方/骨干/backbone.marionette.min.js.map:HTTP错误:状态代码404,::ERR_HTTP_RESPONSE_CODE_FAILURE' DevTools未能加载Sour

  • 我已经更新我的Android Studio昨晚到版本2.0然后我不能运行应用程序了。我的Android Studio是这么说的 “此版本的Android Studio与使用的Gradle插件不兼容。请尝试禁用Instant Run(或将IDE或Gradle插件更新为最新版本)” 我已经更新了我的Gradle到lastes版本,但它不能解决问题。 这是我的身材。格拉德尔。 classpath'com

  • 我想每个人都在Windows中看到了加载栏,在Windows vista,7和8中,我们这里有一些有趣的东西,你可以在任务栏上看到绿色的加载图标。如何创建与此工作的加载?我是新手,我创建了一个文本窗口,其中程序是打印空格与绿色背景,这看起来类似加载栏。我不知道如何创造更好的装载。。。

  • 我当前的Gradle插件版本是4.1.2,这个版本可以正常工作,但是当我更新到4.1.3时,我会出现这个错误,无法构建项目:注意:我添加了maven()和jcenter()。

  • 我在本地安装了gradle 4.7,下面是我的gradle.build,运行良好。gradle插件版本4.7在这一点上是成功的 当我运行gradle build时,它运行良好。 但是现在我需要将我的 SpringBootVersion 升级到 2.4.3(最新),我将文件中的第三行替换为以下内容: 但是我得到以下错误: 未能应用插件[id'org.springframework.boot']Spr