Проблема с упаковкой jar-файла Google Dataflow с FileSystemRefistrar

Я тестировал свое Java-приложение потока данных в моем IntelliJ, и оно отлично работало. Но при запуске файла jar потока данных в системе Linux возникла такая проблема: Проблема с упаковкой jar-файла Google Dataflow с FileSystemRefistrar

это параметры, которые я использовал для потока данных: --project=myproject --stagingLocation=gs://mybucket/staging2 --tempLocation=gs://mybucket/gcp-temp2 --gcpTempLocation=gs://mybucket/gcp-temp2 --bigtableProjectId=myinstance --bigtableInstanceId=user-test --bigtableTableId=test_table1

Итак, проблема в том, что каталог gs не распознается должным образом. Фактически, он считается локальным каталогом сервера, на котором я запускал свой jar-файл.

Вот причина, по которой возникает эта проблема с каталогом:

Проблема с упаковкой jar-файла Google Dataflow с FileSystemRefistrar

Проблема с упаковкой jar-файла Google Dataflow с FileSystemRefistrar

Я искал разницу между [maven assembly jar] и [maven shade jar] и обнаружил, что FileSystemRefistrar указывает не на тот файл.

Но использование плагина тени не является решением проблемы, мне просто повезло, что класс GcsFileSystemRegistrar не был перезаписан. Та же проблема возникает снова, когда я меняю порядок зависимостей.

Чтобы это работало, у меня должны быть обе эти библиотеки в следующем порядке:

beam-runners-google-cloud-dataflow-java

beam-sdks-java-core

"beam-sdks-java-core" включен в "beam-runners-google-cloud-dataflow-java", но мне нужно добавить его после "beam-runners-google-cloud-dataflow-java". Итак, dependencyHierarchy выглядит забавно, но это единственный способ заставить это работать. Вот как это выглядит:

Проблема с упаковкой jar-файла Google Dataflow с FileSystemRefistrar

Если я исключу «beam-sdks-java-core» или изменю порядок, проблема возникнет снова. Я попытался исключить его с помощью плагинов maven, но это не сработало.

Итак, мой вопрос: как мне правильно установить FileSystemRegistrar? Я не знаю, почему это так работает.

+ И я надеюсь, что если кто-то, у кого есть эта проблема, сможет получить подсказку из этой статьи. Я много боролся с этим: '(

stackoverflow.com/questions/44365545/… Эта статья решила проблему. Мне нужно использовать плагин maven shade с ServicesResourceTransformer
OGCheeze 22.03.2018 06:48

Прошу вас выложить решение в качестве ответа. Сообществу должно быть легче это увидеть.

enle lin 27.03.2018 12:43
Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
2
276
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как прокомментировал OGCheeze, это было решено с помощью использования плагина maven shade с ServicesResourceTransformer. В эта почта есть более подробное объяснение.

Я не знаю, как ответить на свой вопрос. Спасибо за ответ

OGCheeze 16.04.2018 08:21

Другие вопросы по теме