2014-02-04 2 views
1

У меня есть java-файл конфигурации Spring в моем проекте (т. Е. С аннотацией @Configuration). Теперь я создаю фасоль SpringLiquibase в этом классе. Основной файл изменений, т. Е. Файл db.changelog.xml, находится в папке ресурсов. Таким образом, он напрямую доступен из папки resources, если я использую метод springLiquibaseObj.setChangeLog("classpath:db.changelog.xml");. Но когда я пытаюсь получить доступ к другим файлам xml из файла db.changelog.xml с
<include file="src/main/config/db/db.changelog-main.xml" /> Я получаю ошибку, что папка и файл не найдены.Путь файла Liquibase в Spring Конфигурационный файл

Здесь я хочу сохранить 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
  • ресурсы

ответ

3

Я нашел решение для этого. До этого я скопировал папку src/main/config в src/main/resouces в netbeans, поэтому она взяла эту папку как пакет. Таким образом, имя папки - 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

я могу получить доступ 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" />.

0

LiquiBase использует приложения, путь к классам, так до тех пор, поскольку config находится в вашем пути к классу, вы также сможете загрузить их.

Они будут иметь путь относительно конфигурации, так что-то вроде «SRC =» 1.0.0/db.changelog.201312120101.xml»в вашем примере.

Если конфигурация не в пути к классам, вы может использовать атрибут relativeToChangeLog = "true" с параметром src = "../../ config/1.0.0/db.changelog.201412120101.xml", но конфигурацией, доступной непосредственно с помощью Liquibase, является опция очистки.

+0

Конфигурационная папка не в ресурсах, так как я должен держать ее снаружи из-за проблем с именами. Вы можете увидеть иерархию выше в моем вопросе, у меня есть это, и я хочу, чтобы папка 'config' была доступна из файла конфигурации Spring и' db.changelog.xml'. Я попытался дать такие пути, также этот атрибут relativeToChangeLog не работает. –

+0

Должно быть хорошо иметь конфигурацию за пределами ресурсов, это всего лишь вопрос настройки весны. Liquibase использует SpringLoader Spring, чтобы найти файлы изменений. Можете ли вы настроить это, чтобы посмотреть в config вместе с ресурсами? –

Смежные вопросы