【问题标题】:Expedite the develop / deploy / run cycle with Spring, Maven and Wildfly使用 Spring、Maven 和 Wildfly 加快开发/部署/运行周期
【发布时间】:2019-07-10 18:12:54
【问题描述】:

我最近刚刚为我的一个客户进入 Java 世界。我有 18 年的 .Net 开发经验,但 Java 方面是新的。

来自 .Net,我习惯于期望能够在 30 秒内完成代码更改、编译代码并使用附加的调试器运行它,也许 1 分钟需要完全重新编译的大型项目。

我发现我当前处理这个 Java 项目的过程需要 5 到 6 分钟。由于时间长且步骤多,我发现自己开始执行其他任务或忘记自己在做什么。

这是我目前进行更改和测试的过程:

  • 修改代码
  • (~200s) 在主 Maven 模块 mvn clean install 上使用 Maven 重新编译代码。如果我这样做-DskipTests,我可以在这里节省大约 60 秒。
  • (~5s) 停止 Wildfly 服务器
  • (~5s) 将.war 文件从myproject\target\myproject.war 复制到c:\wildfly\standalone\deploy\
  • (~90s) 启动 Wildfly 服务器c:\wildfly\bin\standalone.bat
  • 重新登录应用程序(我的会话已过期)
  • 附加调试器

同样,只有每个步骤所需的时间,而且有这么多步骤以及每个步骤之间的等待时间也会让人分心 - 毕竟,谁会坐下来盯着屏幕看 3 分钟编译?无论我去做什么,我肯定不会在编译完成的那一刻回到那个屏幕。那里会浪费时间。

此外,每次我想更改单个代码时,我都会重复此过程。

有没有办法简化这个过程?即:

  • 有没有办法加入其中的一些步骤
  • 我可以加快 Wildfly 启动过程吗?
  • 什么会加速 Maven?
  • 我可以执行 .Net 中存在的“编辑并继续”之类的操作(即实时代码更改)吗?
  • 有没有办法在我部署新战争时不必让 Wildfly 重新初始化?

【问题讨论】:

  • 您使用 Eclipse 进行开发吗?然后您可以使用 WTP 插件在 Wildfly 上测试代码。这将快得多
  • @JFMeier,我没有。我正在使用 VS Code 进行开发。 IMO 的界面更加友好,但我确实意识到这意味着我无法访问您所指的这个插件。
  • Java 开发主要在 Eclipse 或 IntelliJ 中完成。两者都是成熟的 IDE,对您有很大帮助。
  • 您正在寻找的 .NET 体验基本上是您使用 Spring Boot 并将应用程序部署为独立 jar 时所获得的。事实上,你有一个像 Wildfly 这样的外部容器,这让事情变得复杂起来。假设您坚持使用它,我确实支持已经表达的观点:使用适当的 IDE,该 IDE 具有对 JavaEE/JakartaEE 容器的部署支持。 Visual Studio Code 是一个很棒的工具,但它不是这项工作的工具。

标签: java maven spring-mvc wildfly


【解决方案1】:

免责声明:我的回答包括我个人使用的流程,因此它可能不是最佳或最受欢迎的解决方案。无论如何,这些东西往往受制于开发者的个人喜好。

在下面找到一些可以加快开发过程的建议。

  • 使用合适的 IDE 进行 Java 开发

使用流行的 java IDE 可以加快开发速度,因为它支持与构建工具 (Maven)、版本控制系统、应用程序服务器 (Wildfly) 等的集成。

流行的选择是 Eclipse、IntelliJ、Netbeans 等等。

  • 快速重新部署

正如我上面所说,合适的 IDE 将支持与应用程序服务器的集成,Wildfly 适合您的情况。通过使用 Wildfly IDE 插件,您可以加快速度,因为您不必在每次更改代码时都等待应用服务器启动。 IDE 在服务器启动后启动,然后将您的更改应用到正在运行的实例。

就个人而言,我也更喜欢使用独立的 Wildfly 安装,而不是将其与 IDE 集成。为了实现快速重新部署,我使用hotswap agent。请注意,您必须安装 DCEVM,这是一个备用 JVM,但不会干扰您的主 JVM。

最后,总结一下,您从 .NET 转向 Java 的重大转变是可以理解的,您可能会在某些时候感到迷茫。我建议花一些时间来设置你的环境,一旦你完成它并且你感觉很舒服,开发会变得容易得多。

【讨论】:

    【解决方案2】:

    为什么要停止、移动存档并重新启动服务器?

    查看以下 maven 插件,它可以让您至少自动化其中的一部分。

    https://docs.jboss.org/wildfly/plugins/maven/latest/examples/deployment-example.html

    【讨论】:

      猜你喜欢
      • 2018-03-28
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2015-11-03
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多