Ресурс Liquibase найден как в целевой папке Maven, так и в хранилище Maven. - PullRequest
0 голосов
/ 17 января 2019

У меня есть проект Eclipse Maven GWT, и я добавил flowable-form-engine зависимость, которая использует Liquibase. Liquibase ищет файл журнала изменений org/flowable/form/db/liquibase/flowable-form-db-changelog.xml, но находит два!

org.flowable.common.engine.api.FlowableException: Error initialising form data schema
    at org.flowable.form.engine.impl.db.FormDbSchemaManager.initSchema(FormDbSchemaManager.java:58)
    at org.flowable.form.engine.impl.cmd.SchemaOperationsFormEngineBuild.execute(SchemaOperationsFormEngineBuild.java:29)
    at org.flowable.form.engine.impl.cmd.SchemaOperationsFormEngineBuild.execute(SchemaOperationsFormEngineBuild.java:24)
    at org.flowable.common.engine.impl.interceptor.DefaultCommandInvoker.execute(DefaultCommandInvoker.java:10)
    at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53)
    at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:71)
    at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
    at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)
    at org.flowable.form.engine.impl.FormEngineImpl.<init>(FormEngineImpl.java:45)
    at org.flowable.form.engine.FormEngineConfiguration.buildFormEngine(FormEngineConfiguration.java:172)
    at org.flowable.form.engine.configurator.FormEngineConfigurator.initFormEngine(FormEngineConfigurator.java:83)
    at org.flowable.form.engine.configurator.FormEngineConfigurator.configure(FormEngineConfigurator.java:63)
    at org.flowable.common.engine.impl.AbstractEngineConfiguration.configuratorsAfterInit(AbstractEngineConfiguration.java:859)
    at org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl.init(ProcessEngineConfigurationImpl.java:985)
    at org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:887)
    at sk.dominanz.coarui.server.services.WorkflowServiceAdditional.<clinit>(WorkflowServiceAdditional.java:64)
    ... 33 more
Caused by: liquibase.exception.ChangeLogParseException: Error Reading Migration File: Found 2 files that match org/flowable/form/db/liquibase/flowable-form-db-changelog.xml
    at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:118)
    at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:15)
    at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:217)
    at liquibase.Liquibase.update(Liquibase.java:190)
    at liquibase.Liquibase.update(Liquibase.java:179)
    at liquibase.Liquibase.update(Liquibase.java:175)
    at liquibase.Liquibase.update(Liquibase.java:168)
    at org.flowable.form.engine.impl.db.FormDbSchemaManager.initSchema(FormDbSchemaManager.java:52)
    ... 48 more
Caused by: java.io.IOException: Found 2 files that match org/flowable/form/db/liquibase/flowable-form-db-changelog.xml
    at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:206)
    at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:71)
    ... 55 more

Итак, я отладил его, и он нашел один ресурс из целевого каталога:

jar:file:/C:/work/git/coarui/target/Main-1.0-SNAPSHOT/WEB-INF/lib/flowable-form-engine-6.4.0.jar!/org/flowable/form/db/liquibase/flowable-form-db-changelog.xml

и другие ресурсы из репозитория maven:

jar:file:/C:/Users/Piro/.m2/repository/org/flowable/flowable-form-engine/6.4.0/flowable-form-engine-6.4.0.jar!/org/flowable/form/db/liquibase/flowable-form-db-changelog.xml

Есть ли способ игнорировать один из них, или мой путь сборки или определение зависимости неверны?

Мой путь сборки содержит:

  • Исходники src / main / java
  • исходники src / test / java
  • Системная библиотека JRE
  • Зависимости Maven (в C: /Users/Piro/.m2/repository ...)
  • JUnit4

Просмотр ресурсов исходного кода читается classLoader.getResources(path);, где загрузчик классов является загрузчиком классов Jetty JettyLauncher$WebAppContextWithReload$WebAppClassLoaderExtension.

В моей конфигурации run / debug у меня есть classpath, аналогичный пути сборки плюс библиотека GWT gwt-dev-2.8.1.jar - C:\Users\Piro\.m2\repository\com\google\gwt\gwt-dev\2.8.1

В pom.xml зависимость определяется как:

<dependency>
  <groupId>org.flowable</groupId>
  <artifactId>flowable-form-engine-configurator</artifactId>
  <version>${flowableVersion}</version>
</dependency>

Плагин Maven GWT groupId=net.ltgt.gwt.maven, artifactId=gwt-maven-plugin имеет параметр конфигурации classpathScope, но я протестировал <classpathScope>compile+runtime</classpathScope>, <classpathScope>compile</classpathScope> и <classpathScope>runtime</classpathScope>, и возникает та же ошибка.

Поиск в интернете Я нашел похожие посты на плавном форуме ( 1 , 2 ), но решения не найдено.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

кажется, что по какой-то причине ваш .m2 находится в пути к классам. Если это действительно имеет смысл для вас, тогда вы можете попробовать использовать <scope>provided</scope> в pom, где вы объявляете зависимость от flowable-form-engine-configurator. Однако вы можете решить исключить .m2 из classpath, что лучше, я думаю.

0 голосов
/ 17 января 2019

Это обычно происходит, когда вы смешиваете код клиента и сервера в одном и том же модуле Maven, и, учитывая, как работает GWT, нет ничего (легкого) обхода этого, кроме разделения вашего кода на отдельные клиентские и серверные (и, возможно, совместно используемые) модули Maven.

Вы можете посмотреть примеры https://github.com/tbroyer/gwt-maven-archetypes (отказ от ответственности: я также являюсь автором, но также являюсь членом Руководящего комитета GWT)

...