我像这样配置liquibase:
@Bean
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(getConfiguredDataSouce());
liquibase.setChangeLog("classpath*:config/liquibase/master.xml");
liquibase.setContexts("development,test,production");
LOG.debug("Configuring Liquibase");
return liquibase;
}
我的master.xml文件:
<includeAll path="classpath*:/config/liquibase/changelog/" relativeToChangelogFile="false"/>
当我在Tomcat(7.0.50和8.0.20)上运行我的应用程序时,它会打印此异常:
Caused by: java.io.FileNotFoundException: class path resource [D:/proiecte/ALE MELE/Rezervari/target/Rezervari/WEB-INF/classes/config/liquibase/changelog/20150329182213.xml] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:178)
at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:109)
at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:181)
at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:93)
... 73 more
该文件存在于该路径上,但它尝试(因为我不知道是什么原因)将其解析为URL。 有任何想法吗? :)
P.S。:Liquibase版本是3.2.2。
谢谢你, 特勤。
答案 0 :(得分:0)
这可能与Liquibase Jira上的CORE-2186相同。尝试使用从Ant运行的includeAll
时,我会遇到相同的症状。
关于该bug的原始记者添加了一个建议的修复程序,尽管只是对报告的评论。我还没有尝试过。
答案 1 :(得分:0)
对我来说,问题在于斜线(本地,MacOS):
“ classpath:config / liquibase / changelog /”-效果很好。
“类路径:/ config / liquibase / changelog /”-不起作用。