如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以“哦,好吧……”开头,并以某种可行的方式继续描述。 每个人都有自己的方式。

首先–为什么需要这个? 因为执行复制和重新启动服务器是生产力的杀手-浪费大量时间。 如果不提高将项目与容器同步的工作效率,即使是进行简单的修复,也可能需要完整的构建和部署周期才能进行测试。 这可能会花费很多时间,具体取决于项目的规模。

我会写下一些内容,以补充我的StackOverflow答案 :

  • IDE集成– IDE可以选择添加本地服务器并将项目部署到该服务器。 这需要附加的插件,配置哪些工作空间文件在servlet容器中的位置,并且并不总是有效。 当图片中有Maven时,它要么不起作用,要么需要另一个插件(如我的这个答案所述 )。
  • 您使用一些工具来同步目录结构。 在Eclipse中,有FileSync插件 ,它使您可以配置将哪些工作空间文件放到servlet容器中的什么位置。 可能存在执行相同操作的其他工具(例如unison ),或者您可能已经编写了一些脚本或插件来执行此操作。
  • 从maven运行servlet容器(如果使用maven)–使用tomcat插件或jetty插件即可 。 缺点是,要在调试模式下运行,您需要附加外部调试器(而不是为此使用内置的IDE服务器集成)。 并且它需要插件配置。 另外,请记住,如果使用码头(较快速的选项)进行开发,那么如果您的生产容器是tomcat,则行为可能会有所不同。 麻烦不大,但仍要牢记一些。
  • 手动复制项目文件–一开始听起来并不可怕,但随后又开始困扰您–毕竟,这是一项要求自动化的任务。

因此,现在您已将类文件和资源(css,javascript,图像,配置文件)复制到servlet容器。 但是,为了使它们起作用,您需要一些HotSwap功能。 也就是说,让jvm重新加载类定义。 有四个选项:

  • 常规HotSwap –只需在调试模式下运行servlet容器即可。 每当更改类文件时,就可以交换方法的主体。 但是,更改方法或类签名需要重新启动。 我一直使用此选项,而且还没有那么痛苦–在所有方法签名重新定义和重构都不会经常发生之后,即使这样做了,也可以重新启动服务器,因为您不必专注于使某些特定功能起作用。
  • DCEVM – VM增强功能,允许完全重新加载类。 我没有使用过它,但是如果它可以正常工作,它应该可以解决上面提到的签名重新定义问题。
  • JRebel –商业替代品。 我从未使用过它,我听说过它很好,而且我知道还有很多额外的功能,可以让您在各种框架中使用它,例如,重新配置spring上下文不需要重新启动。 我不认为这些事情经常发生,因此我从不推荐JRebel(商业化),但这是您应该考虑的重要选择。
  • 每次更改都重新启动服务器。 如果项目很小,这将花费很少的时间,因此可以选择。 但是我什至不建议在小型项目中使用它,因为至少HotSwap易于配置(而且您仍然需要调试模式)

如此众多的选择–在Java世界中如此典型。 他们或多或少地工作良好。 但是,我决定再添加一个选项,该选项几乎具有零配置– aardWARk 。

通过将aardwark.war文件放入您的tomcat中并重命名它,使其名称包括项目目录的路径,并进行同步处理,即可工作。 请注意,这是添加到上面第一个列表的选项。 对于热交换,您仍然需要第二个列表中的三个选项之一。 在项目页面上有一个更详细的设置指南,但有几点需要强调:

  • 它仅适用于Maven项目。 为了具有零配置,需要使用Maven的Convention-over-configuration
  • 它独立于IDE,独立于servlet容器。
  • 它完成了我认为上面没有其他解决方案可以做的事情(也许除了JRebel之外)-它也将同步依赖于Maven的项目。 通常,您有一个多模块项目,其中一些项目打包为jar,而其他(网络)项目则依赖于它们。 但是,您需要能够在“核心”模块中更改类,并立即查看Web应用程序中的更改。 这将意味着重新包装并重新装入罐子。 AardWARk只需解析pom,找到相关项目并将其类复制到classpath,即可覆盖现有定义
  • 支持多个项目,还支持通过属性文件进行配置(如果您不想或无法命名war文件来包含项目路径)
  • 更改pom时不会同步jars文件-您需要重建并重新启动。 嵌入Maven和运行依赖关系目标的一些解决方法,但是如果添加了新的jar,则无论如何都需要重新启动。
  • 它之所以被称为aardWARk,有一个简单的原因-最好在您的项目之前加载此war文件。 不一定,因为仅同步jar文件才需要,但是最好同步。 Servlet容器不能保证Webapp的加载顺序,但是很可能是按字母顺序选择它们的,因此很有用(出于明显的原因,用war代替var)。

我希望它是一个有用的工具,如果人们开始使用它并提供反馈,我将感到非常高兴。

参考: Bozho的技术博客博客中的JCG合作伙伴 Bozhidar Bozhanov的 Java Web Project 保存和刷新 。

翻译自: https://www.javacodegeeks.com/2013/11/save-and-refresh-with-java-web-projects.html

Java Web项目的保存和刷新相关推荐

  1. java web 刷新_Java Web项目的保存和刷新

    java web 刷新 如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以"哦,好吧--"开头,并以某种可行的方式继续描述. 每个人都有自己的方式 ...

  2. java web ubuntu_Ubuntu部署Java web项目

    登录服务器和给服务器传输文件,使用的工具是Xshell Xftp Mysql 安装mysql 输入:sudo apt-get update                     更新软件列表 输入: ...

  3. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  4. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  5. eclipse与DW联合开发java web项目

    eclipse与DW联合开发java web项目 引言:在开发java web项目时,我们会先用eclipse搭建框架(ssm.ssh-)eclipse主要用在java的开发,但在eclipse上制作 ...

  6. Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法

    今天在Mac系统上启动Java Web项目的时候,提示了 java . net . UnknownHostException : MAC-20150101 nodename nor servname ...

  7. Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    概述 web 服务器.项目.资源概述 web 服务器:可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache ...

  8. 云服务器 ECS 建站教程:手工部署Java Web项目

    手工部署Java Web项目 Tomcat 一个开源的且免费的 Java Web 服务器,常用来作为 web 开发的工具.它可以托管由 servlet,JSP 页面(动态内容),HTML 页面,jav ...

  9. 本篇文档介绍如何手动在ECS实例上部署Java web项目

    本篇文档介绍如何手动在ECS实例上部署Java web项目.适用于刚开始使用阿里云进行建站的个人用户. 项目配置 { .section} 本篇教程在示例步骤中使用了以下版本的软件.操作时,请您以实际软 ...

最新文章

  1. idea使用git上传项目到coding
  2. 聊聊flink的HistoryServer
  3. 一个同步github上fork过来的项目的批处理脚本
  4. LSA 安装及管理应用程序
  5. 系统信息命令(uname、dmesg、df、hostname、free)
  6. [css] flex与其他有什么不同,用它有什么好处?
  7. opera android 7,Opera迷你浏览器 Opera Mini 7
  8. 某些您可以编辑的区域交叠在一起 可能不能同时显示_DX200操作要领—修改与编辑程序(三十九)...
  9. cloudstack+ceph中解决ceph单点问题
  10. 刨一刨内核container_of()的设计精髓
  11. hibernate必须知道的知识
  12. maven常用打包命令
  13. GameFramework框架——UI底层框架梳理
  14. 全能扫描王(一款识别率超高的OCR识别APP)
  15. 线性判别分析(Linear Discriminant Analysis)
  16. php flash 代码转换,php+flashpaper实现文档自动转换
  17. 王者荣耀战力在线查询小程序源码
  18. ZOC7 for Mac(终端仿真器)含注册码 v7.22.7激活版
  19. python爬虫实战-网易BUFF CSGO饰品
  20. 一支笔的测试点_.一支杯子和一支笔的测试用例

热门文章

  1. 第7步 mybatis-generator dao层生成器
  2. 中南大学计算机网.doc,中南大学计算机网络实验报告.doc
  3. php array分组,php数组分组简单例子
  4. (转)Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
  5. intro to JNDI
  6. java安全——类加载器+字节码校验+安全管理器与访问权限
  7. jdbc如何写csv文件_Java:将JDBC结果集作为CSV流化
  8. apache spark_Apache Spark软件包,从XML到JSON
  9. jvm 宕机 打印jvm_通过入侵JVM打印阵列
  10. hazelcast入门教程_Hazelcast入门指南第7部分