我有一个Java Enterprise应用程序,由多个模块(几个WAR和JAR以及1个Angular5模块)构成并打包成1个瘦 EAR 。
从功能的角度来看, Maven 项目结构工作正常,一切都模块化,单元测试,集成测试等工作正常。
然而,由于构建速度原因,我正在寻找Maven的替代品, Bazel 不断涌现。
我安装了Bazel并遵循了简单的示例JAR教程,该工作正常。在尝试规范并迁移到Bazel作为POC之前,我有一些问题:
谢谢! 我很高兴听到通过为Java Enterprise应用程序实现Bazel的成功案例。
答案 0 :(得分:1)
免责声明:我是Bazel团队的工程师。
我认为我可以获得重要的构建,这是正确的 Bazel over Maven为这类项目提高了速度?
这取决于您当前使用Maven构建的速度,以及构建图的特征。
Redfin公司去年从Maven迁移到Bazel,他们的CI构建速度提高了10倍(40-90分钟到5-6分钟)。 They have documented this migration experience on their blog。今年早些时候,Bazel添加了对remote caching的支持,用户已经报道了这些支持可以进一步加快他们的构建速度。
是否有使用Bazel构建WAR模块或EAR模块的示例?
有java_war
packaging rule in rules_appengine
。 Bazel是可扩展的,因此如果特定构建步骤的规则不存在,则可以将其写为rule extension(例如this list of community rules)
我的计划是在POM旁边添加BUILD文件,只要我这样做 试验。有什么缺点吗?
BUILD
/ BUILD.bazel
个文件不会干扰您的项目,也不会影响您现有的Maven版本。
Bazel看起来非常强大,因为它让我可以编写任何内容。这个 也可能是一个缺点,因为在Maven中有很多插件 什么都有。关于脚本或脚本的可维护性的任何想法 Bazel结构?
这是一个非常主观的问题,它取决于你依赖的插件。
您可能遇到的一个迁移步骤是传递外部依赖关系的管理。有一个名为bazel-deps
的优秀工具可以帮助您管理它们并自动生成BUILD文件。
Jadep
is another tool解析您的Java项目并为它们生成BUILD
个文件。有关Jadep的更多信息,请查看this guide。
我在Windows而不是Linux上运行(是的......我知道)。任何缺点 那个与Bazel有关的?一切似乎都很好,也很快 与MSYS2。
Bazel是Windows原生二进制文件,不依赖于MSYS2运行时,除非您使用依赖于bash
的规则,例如sh_library
。查看此博客文章了解更多信息:https://blog.bazel.build/2017/10/16/windows-retrospect.html