
看了《Intellij IDEA中实现热部署》这篇博客后感触很深,在Java开发的过程选择一个适合自己的IDE是很重要的,每次修改代码都需要重新的编译、重启,如何解决这个问题?。看了一下网上的教程,其中Intellij IDEA是Java开发中公认的最好的IDE,拥有很好的代码提示功能,jetty相比于tomcat来说更加轻量级,对于静态资源具有很好的热加载的性能,JRebel能够监控class文件。java版本因此我参考网上教程将这三个工具结合起来,完成静态资源修改、java代码修改后的热加载。
关于Intellij IDEA的安装网上有很多的教程,没有安装的小伙伴可以参考博客《IntelliJ IDEA(2017)安装和破解》。JRebel的安装和激活可以参考博客《IntelliJ IDEA 热部署插件 JRebel 安装激活及使用》。Jetty的安装使用Maven插件的形式在pom文件中进行配置,在后面的整合过程中详述。
不同的安装环境,pom文件的配置是不一样的。我的jdk版本为jdk1.7.0_72,IntelliJ IDEA版本为2017.3.1,jetty-maven-plugin的版本为9.1.4.v20140401。我试了一下,jdk版本要和jetty-maven-plugin的版本要匹配否则启动的项目的时候会报错。
我测试成功的pom文件的配置如下:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.1.4.v20140401</version>
<configuration>
<!-- 扫描静态资源文件和java文件 -->
<scanTargetPatterns>
<scanTargetPattern>
<directory>src</directory>
<includes>
<include>**/*.java</include>
<include>**/*.properties</include>
<include>**/*.sql</include>
<include>**/*.txt</include>
<include>**/*.html</include>
<include>**/*.css</include>
<include>**/*.js</include>
</includes>
</scanTargetPattern>
</scanTargetPatterns>
<!--此处填写0,表示热部署扫描由JRebel完成;填写其他正数表示热部署扫描由Jetty插件完成-->
<scanIntervalSeconds>5</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
<!--<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>-->
<webAppConfig>
<contextPath>/jfsnpm</contextPath>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webAppConfig>
<httpConnector>
<port>8080</port>
</httpConnector>
<!-- 本地装载contextXml,来解决未配置事务或造成启动时等待时间过长 -->
<contextXml>src/main/resources/jetty-deploy.xml</contextXml>
</configuration>
</plugin>
<!-- jerebel maven 插件,用于生成jrebel.xml -->
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>jrebel-maven-plugin</artifactId>
<version>1.1.5</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<rebelXmlDirectory>D:\dangjianmstrs\dangjianmstrs\target\classes</rebelXmlDirectory>
<!-- 指定生成的jrebel.xml放在哪里, 要求放在web应用的 classpath下 -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- war包生成插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>D:\dangjianmstrs\dangjianmstrs\src\main\webapp</warSourceDirectory>
</configuration>
</plugin>
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-70845-1.html
不知道在中国如何
甲午海战前