JFinal开发、打包、部署⼀体化JFinalUndertow
jfinal-undertow ⽤于开发、部署由 jfinal 开发的 web 项⽬。独创 HotSwapClassLoader + HotSwapWatcher 以 321 ⾏代码极简实现热加载开发与部署,前⽆古⼈,后必有模仿者
⼀、极速上⼿
1: 添加 maven 依赖
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>2.5</version>
</dependency>
注意:以前对 jetty-server 的 maven 依赖要删掉
2: 创建 main ⽅法在 eclipse 或 IDEA 中启动项⽬
UndertowServer.start(AppConfig.class);
其中 AppConfig 是继承⾃ JFinalConfig 的⼦类,以前的 JFinal.start(...) ⽤法不再需要
⼆、极速打包与部署
1: 修改 l 头部的打包类型由 war 改成 jar
<packaging>jar</packaging>
2: 在 l 中添加 maven-jar-plugin 插件
<!--
jar 包中的配置⽂件优先级⾼于 config ⽬录下的 "同名⽂件"
因此,打包时需要排除掉 jar 包中来⾃ src/main/resources ⽬录的
配置⽂件,否则部署时 config ⽬录中的同名配置⽂件不会⽣效
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<excludes>
<exclude>*.txt</exclude>
<exclude>*.xml</exclude>
<exclude>*.properties</exclude>
</excludes>
</configuration>
</plugin>
该插件仅为了避免将配置⽂件打⼊ jar 包,如果是打成 fatjar 包则不需要添加此插件
3: 在 l 中添加 maven-assembly-plugin 插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>make-assembly</id>maven打包本地jar包
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<!-- 打包⽣成的⽂件名 -->
<finalName>${project.artifactId}</finalName>
<!-- jar 等压缩⽂件在被打包进⼊ zip、 时是否压缩,设置为 false 可加快打包速度 --> <recompressZippedFiles>false</recompressZippedFiles>
<!-- 打包⽣成的⽂件是否要追加 l 中定义的 id 值 -->
<appendAssemblyId>true</appendAssemblyId>
<!-- 指向打包描述⽂件 l -->
<descriptors>
<descriptor&l</descriptor>
</descriptors>
<!-- 打包结果输出的基础⽬录 -->
<outputDirectory>${project.build.directory}/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
4、在项⽬根⽬录下添加打包描述⽂件 l,内容如下:
<assembly xmlns="/ASSEMBLY/2.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/ASSEMBLY/2.0.0 /xsd/assembly-2.0.0.xsd">
<!--
assembly 打包配置更多配置可参考官司⽅⽂档:
/plugins/maven-assembly-plugin/assembly.html
-->
<id>release</id>
<!--
设置打包格式,可同时设置多种格式,常⽤格式有:dir、zip、tar、
dir 格式便于在本地测试打包结果
zip 格式便于 windows 系统下解压运⾏
tar、 格式便于 linux 系统下解压运⾏
-->
<formats>
<format>dir</format>
<format>zip</format>
<!-- <format&</format> -->
</formats>
<!-- 打 zip 设置为 true 会在包在存在总⽬录,打 dir 时设置为 false 少层⽬录 -->
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<!-- src/main/resources 全部 copy 到 config ⽬录下 -->
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<outputDirectory>config</outputDirectory>
</fileSet>
<!-- src/main/webapp 全部 copy 到 webapp ⽬录下 -->
<fileSet>
<directory>${basedir}/src/main/webapp</directory>
<outputDirectory>webapp</outputDirectory>
</fileSet>
<!-- 项⽬根下⾯的脚本⽂件 copy 到根⽬录下 -->
<fileSet>
<directory>${basedir}</directory>
<outputDirectory></outputDirectory>
<!-- 脚本⽂件在 linux 下的权限设为 755,⽆需 chmod 可直接运⾏ -->
<fileMode>755</fileMode>
<includes>
<include>*.sh</include>
<include>*.bat</include>
</includes>
</fileSet>
</fileSets>
<!-- 依赖的 jar 包 copy 到 lib ⽬录下 -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
5、部署在项⽬根⽬录下添加项⽬运⾏脚本⽂件
本项⽬中的根⽬录下⾯提供了 jfinal.sh、jfinal.bat 这两个脚本⽂件下载。其中第⼀个⽤于 linux、mac 系统,第⼆个⽤于 windows 系统,注意要修改⼀下这些脚本⽂件中的 MAIN_CLASS 变量指向你⾃⼰的项⽬⼊⼝,例如:
MAIN_urpackage.YourMainClass
当然这两个脚本⽂件不是必须的,⼤家完全可以根据个⼈习惯编写启动脚本
6、在命令⾏运⾏打包指令
mvn clean package
7、部署
进⼊项⽬的 target/your-project-release ⽬录,运⾏ ./jfinal.sh start 即可启动项⽬。target ⽬录下还会打包出⼀个 your-project-release.zip 该⽂件是上述第五步中⽣成的⽬录的⼀个 zip 压缩⽂件,上传该⽂件到服务器解压即部署,可以通过修改 l 改变⽣成的⽂件名或者取消⽣成该⽂件
三、jfinal-undertow 优势:
1:极速启动,启动速度⽐ tomcat 快 5 到 8 倍。jfinal 官⽹启动时间在 1.5 秒内
2:极简精妙的热部署设计,实现极速轻量级热部署,响应极为迅速,让开发体验再次提升⼀个档次
3:性能⽐ tomcat、jetty ⾼出很多,可代替 tomcat、jetty ⽤于⽣产环境
4:undertow 为嵌⼊式⽽⽣,可直接⽤于⽣产环境部署,部署时⽆需下载服务,⽆需配置服务,极其适合微服务开发、部署
5:告别 l、告别 tomcat、告别 jetty,节省⼤量打包与部署时间。令开发、打包、部署成为⼀件开⼼的事
6:功能丰富,⽀持 classHotSwap、WebSocket、gzip 压缩、servlet、filter、sessionHotSwap 等功能
7:⽀持 fatjar 与 ⾮ fatjar 打包模式
8:开发、打包、部署⼀体化,整个过程⽆需对项⽬中的任何地⽅进⾏调整或修改,真正实现从极速开发到极速部署
9:以上仅为 jfinal-undertow 的部分功能,更多好⽤的功能如 fatjar 打包模式见 jfinal 官⽹⽂档
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论