Доброго дня!
Если в имени jar-файла (версии) аддона присутствует символ плюса ("+"), то при попытке выполнить ченджлог миграции базы данных из этого аддона jmix-студией возникает ошибка.
воспроизведение
- Предусловие: наличие аддона, где присутствуют ченджлоги миграции и версия аддона (соответственно и имя jar) содержит знак плюс. Например: “addon-starter:0.0.20+build.1”
- Указать аддон в зависимостях и в файле changelog.xlm основного приложения.
- Запустить приложение из среды разработки.
- Согласиться на выполнение ченджлогов из аддона 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. Ошибка не воспроизводится, если при запуске раннера композитного проекта попытаться выполнить ченджлоги из аддона.