Перенести проект Java EAR из Maven в Bazel? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть приложение Java Enterprise, состоящее из нескольких модулей (несколько WAR-файлов и JAR-файлов и 1 модуль Angular5), собранных и упакованных в 1 тонкий EAR .

С функциональной точки зрения Maven Projectstructure работает отлично, все модульно, с юнит-тестами, интеграционными тестами и т. Д. Отлично работает.

Однако из-за скоростей сборки я ищу альтернативы для Maven и Bazel .всплывающее все больше и больше.

Я установил Bazel и следовал простому примеру учебника JAR, который работает отлично.У меня есть несколько вопросов, прежде чем я даже попытаюсь выполнить спецификацию и перейти на Bazel в качестве POC:

  1. Правильно ли я полагаю, что могу добиться значительного улучшения скорости сборки с помощью Bazel по сравнению с Maven для такого рода проекта??
  2. Есть ли примеры для сборки модуля WAR или модуля EAR с помощью Bazel?
  3. Я планирую добавить файлы BUILD рядом с POM, пока я экспериментирую.Есть ли минусы к этому?
  4. Базель кажется очень мощным, так как позволяет мне писать сценарии о чем угодно.Это также может быть недостатком, так как в Maven есть так много плагинов для чего угодно.Есть мысли по поводу работоспособности скриптов или структуры Bazel?
  5. Я работаю на Windows вместо Linux (да .. я знаю).Есть ли минусы в отношении Базеля?Кажется, все работает нормально и быстро с MSYS2.

Спасибо!Мне бы очень хотелось услышать истории успеха реализации Bazel для приложения Java Enterprise ..

1 Ответ

0 голосов
/ 24 мая 2018

Отказ от ответственности : я инженер в команде Bazel.

Правильно ли я считаю, что могу добиться значительного улучшения скорости сборки с помощью Bazel по сравнению с Maven дляэтот тип проекта?

Это будет зависеть от того, насколько быстры ваши текущие сборки с Maven, а также от характеристик вашего графика сборки.

Компания Redfin мигрировала из Maven в Bazel в прошлом году и испытала 10-кратное ускорение в своих сборках CI (с 40-90 минут до 5-6 минут). Они описали эту миграцию в своем блоге .Ранее в этом году Bazel добавила поддержку удаленного кэширования , о которой пользователи сообщали, чтобы ускорить их сборку.

Существуют ли примеры для сборки модуля WAR или модуля EAR с помощью Bazel?

В rules_appengine существует правило упаковки java_war.Bazel является расширяемым, поэтому, если правила для определенного этапа сборки не существуют, его можно записать как расширение правила (например, этот список правил сообщества )

Я планирую добавить файлы BUILD рядом с POM, пока я экспериментирую.Есть ли недостатки?

BUILD / BUILD.bazel файлы не являются навязчивыми для вашего проекта и не должны влиять на ваши существующие сборки Maven.

Bazel кажется очень мощнымтак как это позволяет мне писать сценарии о чем угодно.Это также может быть недостатком, так как в Maven есть так много плагинов для чего угодно.Есть какие-нибудь мысли по поводу работоспособности скриптов или структуры Bazel?

Это довольно субъективный вопрос, и он зависит от того, от каких плагинов вы зависите.

Один шаг миграции выможет натолкнуться на управление переходными внешними зависимостями.Существует отличный инструмент под названием bazel-deps, который помогает вам управлять ими и автоматически генерирует файлы BUILD.

Jadep - это еще один инструмент , который анализирует ваш проект Java игенерирует BUILD файлы для них.Ознакомьтесь с этим руководством , чтобы узнать больше о Jadep.

Я работаю на Windows вместо Linux (да .. я знаю).Есть ли минусы в отношении Базеля?Кажется, все работает нормально и быстро с MSYS2.

Bazel - это бинарный файл Windows, не зависящий от времени выполнения MSYS2, если только вы не используете правила, которые зависят от bash, например sh_library,Проверьте этот пост для более подробной информации: https://blog.bazel.build/2017/10/16/windows-retrospect.html

...