JFinal Undertow JFinal 开发、打包、部署一体化开源项目

我要开发同款
匿名用户2018年12月12日
41阅读
开发技术Java
所属分类Web应用开发、Web框架
授权协议Apache

作品详情

jfinal-undertow用于开发、部署由jfinal开发的web项目。独创HotSwapClassLoader+HotSwapWatcher以321行代码极简实现热加载开发与部署,前无古人,后必有模仿者

一、极速上手1:添加maven依赖<dependency><groupId>com.jfinal</groupId><artifactId>jfinal-undertow</artifactId><version>3.5</version></dependency>

注意:以前对jetty-server的maven依赖要删掉

2:创建main方法在eclipse或IDEA中启动项目UndertowServer.start(AppConfig.class);

其中AppConfig是继承自JFinalConfig的子类,以前的JFinal.start(...)用法不再需要

二、极速打包与部署1:修改pom.xml头部的打包类型由war改成jar<packaging>jar</packaging>2:在pom.xml中添加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:在pom.xml中添加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><phase>package</phase><goals><goal>single</goal></goals><configuration><!-- 打包生成的文件名 --><finalName>${project.artifactId}</finalName><!-- jar 等压缩文件在被打包进入 zip、tar.gz 时是否压缩,设置为 false 可加快打包速度 --><recompressZippedFiles>false</recompressZippedFiles><!-- 打包生成的文件是否要追加 release.xml 中定义的 id 值 --><appendAssemblyId>true</appendAssemblyId><!-- 指向打包描述文件 package.xml --><descriptors><descriptor>package.xml</descriptor></descriptors><!-- 打包结果输出的基础目录 --><outputDirectory>${project.build.directory}/</outputDirectory></configuration></execution></executions></plugin>4、在项目根目录下添加打包描述文件package.xml,内容如下:<assembly xmlns="https://maven.apache.org/ASSEMBLY/2.0.0"    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="https://maven.apache.org/ASSEMBLY/2.0.0 https://maven.apache.org/xsd/assembly-2.0.0.xsd"><!--assembly 打包配置更多配置可参考官司方文档:https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html--><id>release</id><!--设置打包格式,可同时设置多种格式,常用格式有:dir、zip、tar、tar.gzdir 格式便于在本地测试打包结果zip 格式便于 windows 系统下解压运行tar、tar.gz 格式便于 linux 系统下解压运行--><formats><format>dir</format><format>zip</format><!-- <format>tar.gz</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_CLASS=com.yourpackage.YourMainClass

当然这两个脚本文件不是必须的,大家完全可以根据个人习惯编写启动脚本

6、在命令行运行打包指令mvn clean package7、部署

进入项目的target/your-project-release目录,运行./jfinal.shstart 即可启动项目。target目录下还会打包出一个your-project-release.zip该文件是上述第五步中生成的目录的一个zip压缩文件,上传该文件到服务器解压即部署,可以通过修改package.xml改变生成的文件名或者取消生成该文件

三、jfinal-undertow优势:

1:极速启动,启动速度比tomcat快5到8倍。jfinal.com官网启动时间在1.5秒内

2:极简精妙的热部署设计,实现极速轻量级热部署,响应极为迅速,让开发体验再次提升一个档次

3:性能比tomcat、jetty高出很多,可代替tomcat、jetty用于生产环境

4:undertow为嵌入式而生,可直接用于生产环境部署,部署时无需下载服务,无需配置服务,极其适合微服务开发、部署

5:告别web.xml、告别tomcat、告别jetty,节省大量打包与部署时间。令开发、打包、部署成为一件开心的事

6:功能丰富,支持classHotSwap、WebSocket、gzip压缩、servlet、filter、sessionHotSwap等功能

7:支持fatjar与非fatjar打包模式

8:开发、打包、部署一体化,整个过程无需对项目中的任何地方进行调整或修改,真正实现从极速开发到极速部署

9:以上仅为jfinal-undertow的部分功能,更多好用的功能如fatjar打包模式见jfinal官网文档

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论