我的项目中有一个Spring Configuration java文件(即@Configuration
注释)。现在我在这个类中创建一个SpringLiquibase
的bean。更改日志的主文件,即db.changelog.xml
文件位于资源文件夹中。因此,如果我使用resources
方法,可以直接从springLiquibaseObj.setChangeLog("classpath:db.changelog.xml");
文件夹访问它。但是当我尝试使用db.changelog.xml
从<include file="src/main/config/db/db.changelog-main.xml" />
文件访问其他xml文件时,我收到错误,找不到文件夹和文件。
在这里,我想在db.changelog.xml
文件夹中保留resources
文件,在config
文件夹中保留所有其他新的更改日志文件,这些文件应与resources
处于同一级别。原因是,在resources
文件夹中,包存在,因此文件夹结构config/1.0.0
被视为config/1/0/0
我不想要。
有没有办法在我的项目中设置当前的结构(如下所示)?
- 配置
- 1.0.0
- db.changelog.201412120101.xml
- 1.1.0
- 2.0.0
- 资源
- db.changelog.xml
或
- 配置
- 1.0.0
- db.changelog.201412120101.xml
- 1.1.0
- 2.0.0
- db.changelog.xml
- 资源
答案 0 :(得分:4)
我找到了解决方法。在此之前,我已将文件夹src/main/config
复制到netbeans中的src/main/resouces
,因此它将该文件夹作为包。因此文件夹名称 - config/db/1.0.0
已更改为config/db/1/0/0
,但是当我在resources
文件夹中创建新文件夹时,它可以正常工作,文件夹1.0.0
中的所有文件都可以正常访问。现在,我的文件夹结构如下:
- 资源
- 配置
- 分贝
- 1.0.0
- db.changelog.201412120101.xml
- 1.1.0
- 2.0.0
- db.changelog.xml
我可以从我的Spring课程中访问db.changelog.xml
文件,springLiquibaseObj.setChangeLog("classpath:db.changelog.xml");
以及来自db.changelog.xml
文件的其他更改日志文件as <include file="classpath:config/db/1.0.0/db.changelog-201412120101.xml" relativeToChangelogFile="false" />
。
答案 1 :(得分:0)
Liquibase使用应用程序类路径,因此只要config在您的类路径中,您也应该能够加载它们。
他们会有一个相对于配置的路径,所以在你的例子中就像“src =”1.0.0 / db.changelog.201312120101.xml“。
如果config不在类路径中,你可以使用relativeToChangeLog =“true”属性和src =“../../ config / 1.0.0 / db.changelog.201412120101.xml”但是有配置可以通过liquibase直接访问是更清洁的选择。