2016-11-07 18 views
0

기존 데이터베이스와 Spring JPA 애플리케이션 사이에 diff 변경 로그를 생성하려고합니다. 초기 changeLog를 생성하는 것은 현재 성공적이며 diff의 경우 클래스 경로 문제 (StackOverflow 답변의 도움으로)를 처리 할 수 ​​있지만 이제는 diff 변경 로그에 머물러 있습니다.Spring JPA 애플리케이션에서 작동 할 Liquibase gradle 플러그인을 얻을 수 없습니다.

:dbinit:diffChangeLog 
liquibase-plugin: Running the 'main' activity... 
INFO 11/7/16 7:54 AM: liquibase-hibernate: Reading hibernate configuration hibernate:spring:nu.yona.server.subscriptions.entities?dialect=org.hibernate.dialect.HSQLDialect 
INFO 11/7/16 7:54 AM: liquibase-hibernate: Found package nu.yona.server.subscriptions.entities 
INFO 11/7/16 7:54 AM: liquibase-hibernate: Found dialect org.hibernate.dialect.HSQLDialect 
Unexpected error running Liquibase: Unable to resolve persistence unit root URL 

SEVERE 11/7/16 7:54 AM: liquibase: Unable to resolve persistence unit root URL 
liquibase.exception.DatabaseException: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 
     at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:127) 
     at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:1283) 
     at liquibase.integration.commandline.Main.doMigration(Main.java:996) 
     at liquibase.integration.commandline.Main.run(Main.java:188) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46) 
     at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
     at org.liquibase.gradle.LiquibaseTask.runLiquibase(LiquibaseTask.groovy:97) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384) 
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
     at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
     at org.liquibase.gradle.LiquibaseTask$_liquibaseAction_closure1.doCall(LiquibaseTask.groovy:52) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
     at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
     at groovy.lang.Closure.call(Closure.java:414) 
     at groovy.lang.Closure.call(Closure.java:430) 
     at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2030) 
     at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:1890) 
     at org.codehaus.groovy.runtime.dgm$159.invoke(Unknown Source) 
     at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274) 
     at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
     at org.liquibase.gradle.LiquibaseTask.liquibaseAction(LiquibaseTask.groovy:46) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:136) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:129) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:118) 
     at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:623) 
     at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:606) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 
     at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
     at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) 
     at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
     at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 
     at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113) 
     at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
     at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) 
     at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) 
     at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) 
     at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:186) 
     at org.gradle.internal.Factories$1.create(Factories.java:22) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53) 
     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:183) 
     at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33) 
     at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:112) 
     at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:106) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63) 
     at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) 
     at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:92) 
     at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66) 
     at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) 
     at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41) 
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 
     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:79) 
     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:51) 
     at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:59) 
     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) 
     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) 
     at org.gradle.util.Swapper.swap(Swapper.java:38) 
     at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60) 
     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72) 
     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.HintGCAfterBuild.execute(HintGCAfterBuild.java:44) 
     at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
     at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) 
     at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:293) 
     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 
     at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:593) 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.preparePersistenceUnitInfos(DefaultPersistenceUnitManager.java:445) 
     at liquibase.ext.hibernate.database.HibernateSpringDatabase.buildConfigurationFromScanning(HibernateSpringDatabase.java:227) 
     at liquibase.ext.hibernate.database.HibernateSpringDatabase.buildConfiguration(HibernateSpringDatabase.java:55) 
     at liquibase.ext.hibernate.database.HibernateDatabase.setConnection(HibernateDatabase.java:46) 
     at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:131) 
     at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:151) 
     at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:85) 
     ... 130 more 
Caused by: java.io.FileNotFoundException: class path resource [] cannot be resolved to URL because it does not exist 
     at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:187) 
     at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:590) 
     ... 137 more 


For more information, use the --logLevel flag 
:dbinit:diffChangeLog FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':dbinit:diffChangeLog'. 
> liquibase.exception.LiquibaseException: Unexpected error running Liquibase: Unable to resolve persistence unit root URL 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 3.522 secs 

build.gradle입니다 : 당신의 도움이 크게 감사합니다

description = 'Database initializer' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:$project.ext.springBootVersion") 
     classpath("io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE") 
     classpath('se.transmode.gradle:gradle-docker:1.2') 
     classpath 'net.researchgate:gradle-release:2.3.4' 
     classpath 'org.liquibase:liquibase-gradle-plugin:1.2.1' 
     classpath("org.hsqldb:hsqldb:2.3.3") 
     classpath("org.liquibase.ext:liquibase-hibernate4:3.6") 
     classpath("org.springframework.boot:spring-boot-starter-data-jpa:1.4.1.RELEASE") 
     classpath("org.springframework.batch:spring-batch-core:3.0.7.RELEASE") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'idea' 
apply plugin: 'spring-boot' 
apply plugin: 'io.spring.dependency-management' 
apply plugin: 'docker' 
apply plugin: 'net.researchgate.release' 
apply plugin: 'liquibase' 

jar { 
    baseName = 'DatabaseInitializer' 
} 

release { 
    failOnCommitNeeded = true 
    tagTemplate = 'adminservice-${version}' 
    git { 
     requireBranch = 'yd-40-changes-for-building|master' 
    } 
} 

dependencies { 
    compile project(":core") 
    compile("org.springframework.boot:spring-boot-starter-data-jpa:1.4.1.RELEASE") 
    compile("org.springframework.batch:spring-batch-core:3.0.7.RELEASE") 
} 

group = 'yonadev' 

task buildDocker(type: Docker, dependsOn: bootRepackage) { 
    tag = "${project.group}/yonahsqldb" 
    push = true 
    applicationName = jar.baseName 
    dockerfile = file('src/main/docker/Dockerfile') 
    doFirst { 
     copy { 
      from bootRepackage 
      into stageDir 
      rename "${jar.baseName}-${jar.version}-${bootRepackage.classifier}", "${jar.baseName}" 
     } 
     copy { 
      from 'data' 
      into "$stageDir/data" 
     } 
    } 
} 

bootRun { 
    enableAssertions=true 

    systemProperties = [ 
     'spring.datasource.url': "jdbc:hsqldb:file:../YonaDB", 
     'spring.batch.initializer.enabled': "true", 
     'spring.jpa.hibernate.ddl-auto': "update" 
    ] 
} 

bootRepackage { 
     classifier = "full" 
} 

liquibase { 
    activities { 
     main { 
      changeLogFile 'changelog.groovy' 
      url 'jdbc:hsqldb:hsql://yonadbserver/xdb' 
      referenceUrl 'hibernate:spring:nu.yona.server.subscriptions.entities?dialect=org.hibernate.dialect.HSQLDialect' 
      username 'sa' 
      password '' 
      changeLogParameters([ myToken: 'myvalue', 
          second: 'secondValue']) 
     } 
    } 

    // runList = project.ext.runList 
    runList = 'main' 
} 

이것은 내가 gradlew :dbinit:diffChangeLog에서 얻을 오류입니다!

답변

0

나는 Liquibase Gradle 플러그인을 무시하고 사용자 정의 Gradle 작업 as described by here Hazim으로 이동하기로 결정했습니다. 그것은 매력처럼 작동합니다.

1

난 당신이 gradle clean을 실행 한 또는 신중 예외을 읽는다면 확실히 당신이 수 문제를 해결하는 것, 전에 UR 프로젝트 자바 파일을 컴파일하지 않습니다 생각합니다.

내가 그것은 당신의 컴파일 된 클래스가 클래스 경로에 사용할 수없는 뜻이

liquibase: Unable to resolve persistence unit root URL 
liquibase.exception.DatabaseException: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL 

같은 그 뭔가 당신의 예외 계층 구조를 볼 수 있습니다, 단지 클래스 패스에 스캔 liquibase으로. 당신은 하단에 스택 트레이스를 보면 지금은 명확하게 FileNotFoundException가 발생

그것은 가능한 클래스는 u는 모두 컴파일 할 필요가있는 솔루션에 와서 이제

Caused by: java.io.FileNotFoundException: class path resource [] cannot be resolved to URL because it does not exist 

그래서 클래스 패스에이 없음을 의미 ur 클래스를 사용하기 전에 diff을 사용하면 liquibase가 클래스 경로에서 클래스를 찾은 다음 데이터베이스와 비교하여 변경 로그를 생성하고이를 ur diffChangeLog 파일에 추가합니다. :

당신의 자바 클래스에 대해 diff을 생성하기 전에 gradle compile을 실행하십시오