使用Spring应用程序将Liquibase嵌入罐中

Etk*_*tki 9 java spring liquibase

我试图在uberjar中嵌入带有liquibase的纯Spring(不是Spring Boot)应用程序时遇到了一个特定的错误.一旦SpringLiquibase bean被初始化,它就开始寻找我不理解的东西:

WARNING 7/16/15 3:22 PM: liquibase: No Liquibase-Packages entry found in MANIFEST.MF. Using fallback of entire 'liquibase' package
WARNING 7/16/15 3:28 PM: liquibase: Error initializing SpringLiquibase
java.io.FileNotFoundException: ServletContext resource [/liquibase] cannot be resolved to URL because it does not exist
at org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:156)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.init(SpringLiquibase.java:117)
at liquibase.resource.AbstractResourceAccessor.<init>(AbstractResourceAccessor.java:22)
at liquibase.resource.ClassLoaderResourceAccessor.<init>(ClassLoaderResourceAccessor.java:19)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.<init>(SpringLiquibase.java:74)
at liquibase.integration.spring.SpringLiquibase.createResourceOpener(SpringLiquibase.java:489)
at liquibase.integration.spring.SpringLiquibase.createLiquibase(SpringLiquibase.java:439)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:389)
WARNING 7/16/15 3:28 PM: liquibase: Error initializing SpringLiquibase
java.io.FileNotFoundException: ServletContext resource [/liquibase] cannot be resolved to URL because it does not exist
(stacktrace again)
Run Code Online (Sandbox Code Playgroud)

我知道MANIFEST.MF中的Liquibase-Package条目,并使用shade插件填充它(虽然我不知道它有什么用途)并使用shade插件,但它没有产生任何影响.什么是liquibase寻找,我该如何克服这些错误?

Ari*_*han 1

根据这个问题,如果您创建一个 src/main/webapp 文件夹,这个问题就会得到解决:

顺便说一句,根本原因是不存在 src/main/webapp 文件夹。作为解决方法,您可以在 @WebAppConfiguration 中创建一个指向 classpath: 实际存在的文件夹的值或设置一个值。