Java 在罐子里放液化糖。我如何告诉它通过类路径(也在JAR中)而不是文件名查找更改集?
我在Scala应用程序中使用Liquibase,该应用程序使用Java 在罐子里放液化糖。我如何告诉它通过类路径(也在JAR中)而不是文件名查找更改集?,java,scala,jar,classpath,liquibase,Java,Scala,Jar,Classpath,Liquibase,我在Scala应用程序中使用Liquibase,该应用程序使用sbt assembly打包在JAR中。当使用本地文件路径提供changelog位置时,一切正常。为了只使用JAR进行部署,我希望它查看JAR内部。我该怎么做 当前设置: build.sbt包括作为依赖项的“org.liquibase”%“liquibase核心”%“3.3.5” 运行: val liquibaseChangeLog:String=(来自配置) val liquibase=new liquibase.liquibas
sbt assembly
打包在JAR中。当使用本地文件路径提供changelog位置时,一切正常。为了只使用JAR进行部署,我希望它查看JAR内部。我该怎么做
当前设置:
build.sbt
包括作为依赖项的“org.liquibase”%“liquibase核心”%“3.3.5”
运行:
val liquibaseChangeLog:String=(来自配置)
val liquibase=new liquibase.liquibase(liquibaseChangeLog、resourceAccessor、liquibaseConnection)
liquibase.update(新上下文())
我想将liquibaseChangeLog
设置为类路径,如org/my_org/my_project/changelog.xml
,但出现错误:
线程“main”liquibase.Exception.ChangeLogParseException:org/my_org/my_project/changelog.xml中的异常不存在
liquibase.parser.core.xml.XMLChangeLogSAXParser.parsetNode(XMLChangeLogSAXParser.java:100)
parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17)
通过查看这个堆栈跟踪中的Liquibase源代码,我发现它明确地需要一个文件。有没有办法查看JAR?您是否尝试过
classpath:org/my\u org/my\u project/changelog.xml
?我尝试过,谢谢。根据其他SO帖子,这似乎是特定于Spring的,我没有使用它。IDK您当前的resourceAccessor是什么,但是如果您还没有使用它,您可以查看liquibase.resource.ClassLoaderResourceAccessor
类