有没有办法触发Maven Appengine Devserver自动刷新静态文件?
最新版本的maven插件已经启用了每5秒更新代码,这是一个很大的改进。 但除非我配置错误,否则它似乎没有获取静态文件更改,例如正在进行的Javascript连接到appengine代码。
有没有办法改变这种行为,或者我只需要等待新版本?
现在只使用附加的devserver无法完成自动更新。 严格来说,我们需要等待。
但是你可以通过下面的配置实现无缝html / js / css / etc更新,热门java代码替换等效果。
-
配置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。
- 现在,您可以直接对源进行更改并使其刷新,包括html(通过nginx)和servlet(通过devserver)。
- 将此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之外托管我的开发静态文件。 这允许许多优点,包括:
- 静态文件更改后自动页面刷新 – 甚至不需要按刷新按钮。
- 自动转换高级CSS,如LESS
- 自动转换javascript可编译语言,如CoffeeScript
- 开发完成后缩小和CDN化的机制。
上述最深刻的含义是,我需要从基于会话的身份validation转移到基于OAuth或OpenID Connect的身份validation系统,并使我的所有Web服务调用CORS兼容。 这是一些工作,但它也有一个非常深刻的优势:
- 一旦您的Web服务器转移到基于OpenID Connect的身份validation,它现在可以与本机(例如移动)客户端或基于Web的客户端相同地连接!
- 在Google App Engine JAVA中创建多个实例
- 使用带自动缩放的java的GAE上的Cron作业失败
- 使用HTTP Basic-Auth和Google App Engine URLFetch服务
- 如何从非GWT(但Java)gapplication调用服务器上的GWT RPC方法?
- 使用java以编程方式将图像上传到Google App引擎blobstore
- 如何在Android Studio中手动安装App Engine?
- Google App Engine如何预编译Java?
- AppEngine响应时间差异
- 如何在ContainerRequest中获取会话对象以使用注释@RolesAllowed(Role_user)?