`
liufei.fir
  • 浏览: 686113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

精通Intellij Idea之热部署

阅读更多
部署在项目开发过程中是常有的事,特别是debug的时候。但是如果每次fix 一个bug都要把整个项目重新部署一遍以便测试fix的效果或者继续debug其他bug,那对开发人员来说无疑是一大噩梦。不过谁都不想噩梦连连,有了 JVM的hotSwap以及Intellij Idea对debug,hotSwap的支持,从此美梦相伴(夸张了点:))。今天通过这篇文章介绍一下通过对Intellij Idea热部署的设置达到最方便的最高效的debug效果。

我想在介绍具体设置之前,不妨了解一些背景知识和概念。

    * HotSwap:“HotSwap”是JPDA(Java Platform Debugger Architecture)中的一个特性,JPDA增强是自Java 2 SDK1.4新增的功能。HotSwap允许将JVM中的类定义替换为新的类定义,这就允许开发人员在debug时,将修改过的class替换JVM中旧有的class,无需重新启动服务器。不过,目前HotSwap只支持对方法body的修改,不支持对类和方法签名的修改(比如修改类名,方法名,方法参数等)。考虑这些限制,也是有理由的,替换类定义,就需要新类和旧类之间有一个关联,这里关联就是类的全名(或许还有其他信息),类名都改了,就不知道替换哪个类了。至于方法签名的修改,应该是考虑到运行时方法的调用,通过方法签名替换已有的方法调用。
    * 三种目录:项目的源程序目录,构建输出目录,部署目录(这是我按照我个人理解划分的)。热部署的设置与这些目录有着密切关系。源程序目录包括java文件,资源文件,web资源文件等项目文件的目录;构建输出目录是指通过编译java源文件,copy资源文件构建一个应用程序部署之后应该具有的目录结构;部署目录很好理解,就是应用程序在服务器中可以存在的位置。

通常我们部署一个应用是将该应用打包成war或者ear,而通常开发阶段是构建成Server指定的目录结构来部署到Server上,如果每次要 copy来copy去,那麻烦死了。所以我们要想办法减少不必要的copy。

    * 第一种方法:在Server部署目录下设置构建输出目录,以tomcat为例,就是在%tomcat_home%\webapps目录下建立一个新的目录,目录名就是你的应用context,具体就是打开项目设置界面(ctrl+alt+shift+S,v8.0),选择Modules,将你的应用Exploded Directory设置为%tomcat_home%\webapps\yourContext。同时,将你各个Module的编译输出路径设置为%tomcat_home%\webapps\yourContext\WEB-INF\classes(可能需要你预先手动建立),这样class文件就自动生成到该目录下。
    * 第二种方法:现在一些Server都支持重定向,以tomcat为例,可以在%tomcat_home%\conf\Catalina\localhost下创建一个xml配置文件将部署目录指定为你的构建输出目录。代码片段如:<Context path=”/myApp” docBase=”D:\workspace\myProject\out\exploded\myApp” />。这样每次修改了java文件之后comile一下修改的文件,对于jsp需要make一下,就能达到热部署的目的。其实现在Intellj Idea默认设置使用的就是这种方法,只不过这个重定向的配置文件在你的Documents and Settings里面,所以你如果你使用这样方法,不必自己设置。

其实,这两种方法是异曲同工。

进一步设置:将你的构建输出目录直接设置在源程序目录中,然后重定向的docBase直接指向你的web根目录(就是WEB-INF的父目录)。这样,你只要将编译输出目录设置为WEB-INF\classes就行了,而且,修改JSP文件都不要重新构建,唯一要做的就是修改了java文件之后compile一下。

再进一步设置:打开Setting界面(ctrl+alt+S),然后

    * 其一:选择Compiler选项,在Deploy web application to servers after compilatoin下勾选Never,为什么选Never?因为根据我们上面的设置,对于java文件的修改,编译(compile,ctrl+shift+f9)之后已经更新到了部署目录,而对于其他文件(例如jsp),构建(make,ctrl+f9)之后也都更新到了部署目录,当然如果你的部署目录就设置在源程序目录中,那jsp都不要在make了。
    * 其二:选择Debugger-HotSwap选项,确保勾选了Make project before reloading classes,同时选择Reload classes after compilation为Always。这样我们在编译某个修改了的java文件之后,就会利用HotSwap机制reload class,而Make project before reloading classes就确保了其他修改过的文件一起同步到部署目录。

这样,经过上面这些设置,在debug时最大程度上减少了Re-deploy和重启服务器的次数。对于内存不足的电脑来说,re-deploy次数多了,就会outOfMemory,然后不得不重启服务器。
分享到:
评论
1 楼 genier200 2010-09-19  
我也在使用intellj idea,这个热部署的问题在于:

如果更新了一个java类中的某个方法中的code,compile后,自动加载到最新的代码;

但是如果给这个java类新增了新的方法或者改变了此方法的返回值,compile后将更新失败,提示不支持卸载的方法;

新增方法、更改方法的返回值:基本不能实现热部署!

相关推荐

    在IntelliJ idea8中部署Jboss服务器图解

    "在IntelliJ IDEA 8中部署Jboss服务器图解" IntelliJ IDEA 8是 JetBrains 公司开发的一款功能强大且灵活的集成开发环境(IDE),它支持多种programming语言,包括Java、Python、Ruby、PHP等。Jboss则是一款流行的...

    Intellij IDEA下建立maven管理的web项目,配置jetty热部署

    Intellij IDEA 下建立 Maven 管理的 Web 项目,配置 Jetty 热部署 在本文中,我们将学习如何使用 Intellij IDEA 建立一个基于 Maven 管理的 Web 项目,并配置 Jetty 热部署。 知识点 1:Intellij IDEA 中的 Maven ...

    idea热部署(更新代码不用重启tomcat).docx

    为此,许多IDE(集成开发环境)如IntelliJ IDEA提供了热部署功能,使得开发者可以在不重启应用的情况下实时查看代码改动的效果。本文将详细介绍如何在IntelliJ IDEA中配置热部署,以便在更新前端代码时能够快速预览...

    Intellij IDEA 入门教程.pdf (高清文字版)

    IntelliJ IDEA是一款由JetBrains公司开发的Java集成...综上所述,本教程内容全面,覆盖了IntelliJ IDEA从安装、配置、优化到实际开发的各个方面,旨在帮助Java开发者快速上手和精通这款强大的开发工具,提高开发效率。

    IntelliJ IDEA 12.0 Web开发及热部署

    "IntelliJ IDEA 12.0 Web开发及热部署" 在这篇文章中,我们将学习如何使用 IntelliJ IDEA 12.0 进行 Web 开发和热部署。首先,我们需要安装相关的软件,包括 IntelliJ IDEA 12.0、Apache Tomcat 7.0.34 和 JRebel 5...

    IntelliJ IDEA中SpringBoot项目通过devtools实现热部署的方法

    IntelliJ IDEA中SpringBoot项目通过devtools实现热部署的方法 1. 添加devtools依赖项:在pom.xml文件中添加spring-boot-devtools依赖项,以便在IntelliJ IDEA中使用热部署功能。 知识点:spring-boot-devtools是...

    IntellijIdea开发工具详细使用文档.pdf

    IntelliJ Idea开发工具详细使用文档 IntelliJ IDEA是一款功能强大且灵活的集成开发环境(IDE),由 JetBrains 公司开发。它支持多种编程语言,包括 Java、Groovy、Kotlin、Scala 等。下面是 IntelliJ IDEA 的详细...

    IntelliJ IDEA 中文指南.pdf

    指南的最后部分还提供了团队DevOps方案的参考,这表明IntelliJ IDEA不仅仅是一个代码编辑器,它也可以在软件开发的整个生命周期中发挥作用,包括持续集成和部署等DevOps实践。 ### 结语 文档的结尾处,作者感谢了...

    IntelliJ IDEA使用教程从入门到上瘾(2019图文版)

    IntelliJ IDEA 使用教程从入门到上瘾(2019 图文版) 本资源主要介绍了 IntelliJ IDEA 的使用教程,从基础到高级,涵盖了从设置工作空间到配置 Maven 等多个方面的知识点。 1. IDEA VS Eclipse 核心术语比较 在...

    IntelliJ IDEA 2019汉化文件.rar

    每个版本的IntelliJ IDEA都有可能在界面上有所改动,因此汉化文件需要与之匹配才能达到最佳效果。 至于压缩包子文件的文件名称列表,由于只给出"IntelliJ IDEA 2019汉化文件"这一项,我们可以推测这可能是一个包含...

    intellij idea 中文语言包resources_zh_CN_IntelliJIDEA_2019.3_r1.jar

    IntelliJ IDEA是java编程语言开发的集成环境,不过官方是英文版的,这是一个汉化包,下载后放至IntelliJ IDEA安装目录的lib目录下就行,重新启动程序就是中文了。

    Intellij IDEA教程

    同时,IDE的热部署功能允许你在不重启应用的情况下,实时查看代码修改的效果,加速开发迭代。 在学习过程中,你还可以探索IntelliJ IDEA的高级特性,如Live Templates(代码片段)、Code Inspection(代码检查)和...

    IntelliJ IDEA使用教程

    IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境(IDE),专为Java语言设计,但也支持其他编程语言如Kotlin、Scala、Groovy等。它被广泛认为是目前最好的Java IDE之一。IntelliJ IDEA通过其智能代码助手、...

    IntelliJIDEA汉化包

    8. **插件管理**:IntelliJ IDEA的强大之处在于其丰富的插件生态系统。学习如何查找、安装和管理插件,能极大地扩展IDE的功能。 9. **版本选择**:IntelliJ IDEA有社区版(免费)和专业版(付费)。社区版适合开源...

    IntellijIdea配置Tomcat[整理].pdf

    部署 Web 应用程序需要在 IntelliJ IDEA 中进行配置。用户可以按照以下步骤进行配置: 1. 按下快捷键 Ctrl+Alt+Shift+S,在弹出的 Project structure 中点击 Artifacts。 2. 在中间列中点击 +,新建一个 Web ...

    Intellij Idea开发工具详细使用文档.pdf

    IntelliJ IDEA的使用涵盖了从项目创建、环境配置、代码编写到项目部署的全过程。熟练掌握其各项功能,能极大地提高开发效率,降低出错率。无论是初学者还是经验丰富的开发者,都能在IntelliJ IDEA的智能提示和辅助...

    IDEA热部署修改mybatis映射文件工具 jr-ide-intellij-nightly.zip

    【标题】"IDEA热部署修改mybatis映射文件工具 jr-ide-intellij-nightly.zip" 描述了一款专门针对IntelliJ IDEA开发的插件,该插件旨在解决在开发过程中MyBatis映射文件(XML配置文件)无法实现热部署的问题。...

    IntelliJ IDEA 主题皮肤包

    IntelliJ IDEA是一款广受欢迎的Java开发集成环境,由JetBrains公司开发,它以其高效、智能的代码编辑、强大的项目管理以及丰富的插件系统而受到开发者们的喜爱。本主题皮肤包是为提升开发者在IntelliJ IDEA中的工作...

    基于 IntelliJ IDEA 的快速部署插件.zip

    基于 IntelliJ IDEA 的快速部署插件 项目简介 本项目是一个基于 IntelliJ IDEA 的插件,旨在提供快速部署 Java 或 JavaScript 应用程序的功能。通过该插件,用户可以将构建的制品上传至服务器,并进行部署操作。...

Global site tag (gtag.js) - Google Analytics