在appEngine app的本地调试中,Idea不会升级源代码

时间:2017-12-13 08:41:16

标签: google-app-engine intellij-idea

我创建了Spring Boot + Google App Engine个应用程序。出于开发目的,我使用IntelliJ IDEAGoogle Cloud Tools插件。我目前只使用localDebug,这意味着我没有在Google云上部署任何内容。调试配置如下:

enter image description here

我创建了一个简单的服务,以确保我的代码是否在更改时更新:

static int i = 10;
@GetMapping(value = "/test")
public String test() {
    return Integer.toString(++i);
}

不幸的是,当我更改我的代码(例如从i = 10i = 100)并重新启动应用时(我的意思是按下Rerun (Ctrl+F5)Stop (Ctrl+F2) + Run我的代码不适用于服务器,这意味着Idea不会在服务器启动时重建源代码。正如您在上面的屏幕截图中看到的那样,我甚至尝试将Build Project步骤添加到Before launch,其中没有'工作。

  • 因此,要应用更改,我需要从命令行mvn appengine:run执行 - >按Ctrl+C停止它,切换到IDEA并再次开始调试,这是一个痛苦的屁股。
  • 另一种选择是使用Hot Reload(更新应用程序,Ctrl+F10)。它只重新编译已更改的类并重新加载资源。这是一个很酷的功能,但遗憾的是它在许多情况下都无法使用,这使我无法将其用作可靠的重载。

我有什么办法可以强迫IDEA编译我的资源吗?这是我应该向插件开发者报告的错误。或者也许appengine使用一些需要显式调用maven的其他远程源?

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。据我了解,Google cloud plugin只是将类符合target/classes,但当它启动appEngine时,引擎预期解压缩.war将出现在target/demo-0.0.1-SNAPSHOT下。< / p>

E.g。如果因为如果我删除这两个目录,我会收到以下错误:

enter image description here

要解决这个问题,我需要编译这些来源:

  • 在工具栏Run中 - &gt; Edit configuration
  • 选择Google App Engine Standard Local server
  • 在发布之前添加Build Artifact - &gt; demo:war exploded其中demo是您的应用程序的名称。

enter image description here