有没有办法触发Maven Appengine Devserver自动刷新静态文件?

最新版本的maven插件已经启用了每5秒更新代码,这是一个很大的改进。 但除非我配置错误,否则它似乎没有获取静态文件更改,例如正在进行的Javascript连接到appengine代码。
有没有办法改变这种行为,或者我只需要等待新版本?

现在只使用附加的devserver无法完成自动更新。 严格来说,我们需要等待。

但是你可以通过下面的配置实现无缝html / js / css / etc更新,热门java代码替换等效果。

  1. 配置Apache httpd或Nginx直接从war-source提供静态代码,并为servlet路由到app引擎。 在我的例子中,可以从webapp目录直接访问所有html,并通过/ sim /调用servlet。 使用nginx和7070端口,我的工作nginx配置如下所示:

    server { listen 7070; root /home/pchauhan/Projects/my-company/my-mvn-gae-project/my-mvn-gae-project-war/src/main/webapp; location /sim/ { proxy_pass http://localhost:8080/sim/; } } 

有关更多配置,请使用nginx的此文档。

分别配置Eclipse和GAE。

  1. 现在,您可以直接对源进行更改并使其刷新,包括html(通过nginx)和servlet(通过devserver)。
  2. 将此webapp文件夹添加到Chrome Dev Tools,Sources Workspace,生活将更加轻松。 可以通过ctrl直接将小变化从chrome保存到src

请注意,虽然这很棒,但您应该在上传之前仅在8080(devserver端口)上测试您的应用程序,以防万一配置文件中存在错误并且目标未正确创建/提供。

同步的替代想法 :如果您由于某种原因不想使用nginx / httpd,可以将目标… webapp添加到chrome工作区,直接在那里工作以进行无缝更新,然后使用lsyncd将目标同步回src。 我还没有尝试过,但看起来可行,虽然有点冒险。

到目前为止,我发现的最佳方法是在pom.xml中配置以下条目。 这将自动构建您的静态文件并在页面上反映出来。

  org.apache.maven.plugins maven-antrun-plugin 1.7   process-classes  run                    

之后的另一个条目

     org.eclipse.m2e lifecycle-mapping 1.0.0      org.apache.maven.plugins maven-antrun-plugin [1.6,)  run     true          

这工作正常。 只要更改并保存了任何静态文件,它就会反映在页面上。

像PoojaC20一样,我也无法单独使用devserver,但我最终得到了一个不同的解决方法,我认为我会分享,以防其他人发现它有用。

我现在使用grunt-serve在GAE devserver之外托管我的开发静态文件。 这允许许多优点,包括:

  1. 静态文件更改后自动页面刷新 – 甚至不需要按刷新按钮。
  2. 自动转换高级CSS,如LESS
  3. 自动转换javascript可编译语言,如CoffeeScript
  4. 开发完成后缩小和CDN化的机制。

上述最深刻的含义是,我需要从基于会话的身份validation转移到基于OAuth或OpenID Connect的身份validation系统,并使我的所有Web服务调用CORS兼容。 这是一些工作,但它也有一个非常深刻的优势:

  1. 一旦您的Web服务器转移到基于OpenID Connect的身份validation,它现在可以与本机(例如移动)客户端或基于Web的客户端相同地连接!