Как получить доступ к файлу в JAR при запуске сборки Maven - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу запустить обновление liquibase с помощью liquibase-maven-plugin, но yml-файл changeset-файла находится внутри .jar, который я извлекаю по зависимости.

Когда я открываю .jar с TotalCommander, он имеет следующую структуру: xy.jar / changelog / changeset.yml.

Я пытался включить его в качестве каталога ресурсов, но он не смог сказатьмне .jar это не каталог.

Я также попытался создать WAR-файл и просто установить в свойстве liquibase changeLogFile путь, ведущий к .jar, например {projectDir} / target / .. war / .. lib / .. jar / changelog /myFile.yml Но maven не смог найти его таким образом.

Возможно ли как-то получить доступ к этому файлу?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Спасибо за ответ, но решение было проще, я просто заржавел в этой области :) Мне просто нужно было добавить требуемый JAR из WAR как зависимость Maven. Это добавляет содержимое JAR к пути к классам в процессе сборки Maven, поэтому я могу ссылаться на его файлы, как они были в корневом каталоге проекта.

TLDR: добавьте JAR в качестве зависимости в pom и используйте путь:

<changeLogFile>changelog/xy.jar</changeLogFile>

0 голосов
/ 10 ноября 2019

Вы можете прочитать файл, используя код ниже.

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("changelog/myFile.yml");
...