Ошибка выполнения ченджлога из аддона, если в имени jar присутствует плюс

Доброго дня!
Если в имени jar-файла (версии) аддона присутствует символ плюса ("+"), то при попытке выполнить ченджлог миграции базы данных из этого аддона jmix-студией возникает ошибка.

воспроизведение
  • Предусловие: наличие аддона, где присутствуют ченджлоги миграции и версия аддона (соответственно и имя jar) содержит знак плюс. Например: “addon-starter:0.0.20+build.1”
  1. Указать аддон в зависимостях и в файле changelog.xlm основного приложения.
  2. Запустить приложение из среды разработки.
  3. Согласиться на выполнение ченджлогов из аддона jmix-студией.
  • ОР: Liquibase выполнит непримененные ченджлоги и приложение запустится.
  • ФР: Liquibase сообщает об ошибке при попытке выполнить ченджлоги из аддона.

Возможен любой другой сценарий, где jmix-студия при запуске приложения установила бы наличие невыполненных ченджлогов миграции из такого аддона и попыталась их выполнить.

стэктрейс
[2025-02-14 16:40:38] SEVERE [liquibase.integration] Cannot list resources in jar:file:/C:/Users/ssa/.m2/repository/ru/cs_consult/telegramaddon/0.0.20+build.1/telegramaddon-0.0.20+build.1.jar!/ru/cs_consult/telegramaddon/liquibase/changelog/: C:\Users\ssa\.m2\repository\ru\cs_consult\telegramaddon\0.0.20 build.1\telegramaddon-0.0.20 build.1.jar
java.nio.file.NoSuchFileException: C:\Users\ssa\.m2\repository\ru\cs_consult\telegramaddon\0.0.20 build.1\telegramaddon-0.0.20 build.1.jar
	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
	at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:53)
	at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:38)
	at java.base/sun.nio.fs.WindowsFileSystemProvider.readAttributes(WindowsFileSystemProvider.java:198)
	at java.base/java.nio.file.Files.readAttributes(Files.java:1764)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1420)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:743)
	at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:860)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:258)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:187)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:348)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:319)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:258)
	at liquibase.resource.ClassLoaderResourceAccessor.listFromClassLoader(ClassLoaderResourceAccessor.java:270)
	at liquibase.resource.ClassLoaderResourceAccessor.list(ClassLoaderResourceAccessor.java:190)
	at liquibase.integration.commandline.CommandLineResourceAccessor.list(CommandLineResourceAccessor.java:39)
	at liquibase.resource.CompositeResourceAccessor.list(CompositeResourceAccessor.java:48)
	at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:528)
	at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:409)
	at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:318)
	at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:23)
	at liquibase.changelog.DatabaseChangeLog.include(DatabaseChangeLog.java:587)
	at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:363)
	at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:318)
	at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:23)
	at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:369)
	at liquibase.Liquibase.lambda$update$1(Liquibase.java:224)
	at liquibase.Scope.lambda$child$0(Scope.java:180)
	at liquibase.Scope.child(Scope.java:189)
	at liquibase.Scope.child(Scope.java:179)
	at liquibase.Scope.child(Scope.java:158)
	at liquibase.Liquibase.runInScope(Liquibase.java:2405)
	at liquibase.Liquibase.update(Liquibase.java:211)
	at liquibase.Liquibase.update(Liquibase.java:197)
	at liquibase.integration.commandline.Main.doMigration(Main.java:1869)
	at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:398)
	at liquibase.Scope.lambda$child$0(Scope.java:180)
	at liquibase.Scope.child(Scope.java:189)
	at liquibase.Scope.child(Scope.java:179)
	at liquibase.Scope.child(Scope.java:158)
	at liquibase.integration.commandline.Main$1.run(Main.java:397)
	at liquibase.integration.commandline.Main$1.run(Main.java:221)
	at liquibase.Scope.child(Scope.java:189)
	at liquibase.Scope.child(Scope.java:165)
	at liquibase.integration.commandline.Main.run(Main.java:221)
	at liquibase.integration.commandline.Main.main(Main.java:164)
обстановка
  • Jmix version: 1.6.2
  • Jmix Studio plugin version: 2.4.3-243
  • IntelliJ version: IntelliJ IDEA 2024.3.2 (Community Edition)
  • Windows 11 Pro 24H2

P.S. Ошибка не воспроизводится, если при запуске раннера композитного проекта попытаться выполнить ченджлоги из аддона.

Добрый день!

Спасибо за обращение.
На первый взгляд похоже на проблему в самом инструменте Liquibase.
Посмотрим на проблему детальнее и позже вернёмся с результатами.