Java Web 开发环境可以最大限度地缩短构建-部署-测试周期?
Posted
技术标签:
【中文标题】Java Web 开发环境可以最大限度地缩短构建-部署-测试周期?【英文标题】:Java web development environment to minimize build-deploy-test cycle time? 【发布时间】:2010-11-09 13:45:22 【问题描述】:哪种 Java Web 开发环境最适合绝对最小化构建-部署-测试周期时间?
Web开发环境: JBOSS、Tomcat、Jetty?部署WAR爆炸?复制 WAR 还是使用符号链接?这里有一些我不知道的因素。
构建-部署-测试周期? 对源代码或其他资源(包括 Java 源代码、html、JSP、 JS、图片等)。
我希望通过减少观看 Ant 构建和 J2EE 容器启动的时间来加快我的开发速度。我想要 Ruby on Rails 体验 --- 或者尽可能接近。
我更喜欢与 Web 框架无关的解决方案,但是如果某个特定框架特别有利,那么我想听听。
假设所有标准工具都在使用中:Hibernate、Spring、JMS 等。如果需要存根/模拟支持基础设施来完成这项工作,我可以接受。事实上,如果开发环境与我们的生产环境大不相同,如果它可以节省我足够的时间,我可以接受。
【问题讨论】:
【参考方案1】:你或许应该看看 Javarebel:
http://www.zeroturnaround.com/javarebel/
这里有这个帖子:
How to improve productivity when developing Java EE based web applications
【讨论】:
【参考方案2】:JBOSS 使用 Tomcat 作为其 servlet/JSP 引擎,所以这是一个洗牌。
Tomcat 确实支持hot deploy。
Jetty 很小而且启动很快,但它doesn't support hot deploy。
Eclipse 只是一个 IDE。它需要某种 servlet/JSP 引擎。如果它像 IntelliJ,您可以使用任何您喜欢的 Java EE 应用服务器或 servlet/JSP 引擎。
IntelliJ 的速度非常快,而且您不必在每次重建时都停止和启动服务器。它适用于爆炸的 WAR,所以事情发生得很快。
【讨论】:
在 Jetty 上重新部署的一种简单方法是使用上下文。然后您触摸上下文 xml 文件,然后重新加载 Web 应用程序。 “ContextDeployer 可用于(热)部署具有 Jetty 特定配置的任意上下文或 Web 应用程序。要在启动时仅静态部署标准 Web 应用程序,请使用 WebAppDeployer。” docs.codehaus.org/display/JETTY/ContextDeployer【参考方案3】:建筑(过去是编译)是我们时代的标志。我们需要快速验证我们的想法和行动。每当我发现自己建立了很多次时,这通常表明我没有集中注意力。我没有计划。对我来说,这是停下来思考的时候。列出需要完成的事情(这与 Web 框架无关)全部完成,并在一次构建后全部测试。
【讨论】:
我不太明白为什么人们对此投了赞成票。这适用于您和您的工作流程,但实际上并不能回答问题。【参考方案4】:Jboss Seam 与Jboss Developer Studio 一起适用于热部署除 EJB 之外的所有内容(SLSB、SFSB 和实体需要重新部署)。
【讨论】:
将近两年后 - 我现在会选择 Playframework 以提高速度【参考方案5】:你考虑过 Grails 吗?
【讨论】:
【参考方案6】:使用 Google App-Engine + GWT(可选)+ Eclipse 插件可以快速部署。
从未见过更快的东西。
【讨论】:
不是每次换课都要重启内置服务器吗?我查看了 GAE,发现我必须这样做。很高兴知道,因为我很可能是错的。 在我的回答中,我只进行了部署-无论如何,只有在您更改服务器端代码时,您才必须这样做(重新启动开发服务器)-在 GAE + GWT 中,大多数逻辑是客户端-side 所以没什么大不了的。【参考方案7】:Maven 2 和日食。 mvn eclipse:eclipse
【讨论】:
WTP?另外,你能添加所有很棒的东西的链接吗? :)【参考方案8】: 与内置厨房水槽的超载 Web 容器相比,小型 Web 容器的加载速度更快(..咳 ..jboss )。 一些设计决策会减慢构建时间(例如,基于方面编织的工具包在编译时间中添加了方面编织阶段)。 避免构建只能在长时间精心加载循环后才能测试的组件。缓存是这里的罪魁祸首。如果您的系统对分散在各处的全局缓存具有深度依赖关系,则每次需要测试某些内容时都需要加载缓存。 可单元测试的组件,因此您可以运行部分而不是整体。我发现构建合理的项目在几到 10 秒内编译、部署和启动,这通常没问题。
【讨论】:
【参考方案9】:GWT in eclipse 可能是我能想到的最快的了。使用托管模式浏览器进行测试,您可以在不重新启动任何内容的情况下调试和更改代码。只需单击浏览器中的刷新按钮,更改就在那里(java、css 等)。另一件事是 GWT 正在向普通浏览器(Firefox、IE、Safari)添加相同的支持,因此您可以在它们中以相同的方式进行调试。这些变化将在 2.0 中出现。见http://code.google.com/events/io/sessions/GwtPreviewGoogleWebToolkit2.html
【讨论】:
【参考方案10】:您是否尝试过使用 Eclipse Java EE,然后告诉它部署到由 Eclipse 管理的服务器? Tomcat 和 JBOss 以这种方式工作得很好。还允许您更改方法中的代码,使用 Ctrl-S 并在服务器内部更新类。
MyEclipse 也可以像这样很好地工作。
【讨论】:
【参考方案11】:JRuby on Rails。在您想要的任何平台上开发,部署到标准 Java 服务器。
【讨论】:
【参考方案12】:我认为避免长时间构建部署测试周期的最佳方法是为您的代码编写单元测试。通过这种方式,您无需等待构建/部署阶段即可找到错误。
对于 JSP,您可以直接在 JBOSS 工作文件夹中编辑 JSP 文件:
> cd $JBOSS_HOME/server/default/tmp > 查找 -name myJspFile.jsp ./tmp/vfs/automountd798af2a1b44fc64/Jee6Demo.war-bafecc49fc594b00/myJspFile.jsp
如果您编辑 tmp 文件夹中的文件,您只需点击浏览器刷新按钮即可测试您的更改。
【讨论】:
以上是关于Java Web 开发环境可以最大限度地缩短构建-部署-测试周期?的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种好方法可以最大限度地减少 Google Maps Roads API 的负载?