JFinal 项目部署环境 JFinal Undertow

Apache
Java
跨平台
2018-12-12
JFinal

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

一、 极速上手

1: 添加 maven 依赖

<dependency>
	<groupId>com.jfinal</groupId>
	<artifactId>jfinal-undertow</artifactId>
	<version>1.9</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="http://maven.apache.org/ASSEMBLY/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
	<!--
	assembly 打包配置更多配置可参考官司方文档:
	http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
	-->

	<id>release</id>

	<!--
		设置打包格式,可同时设置多种格式,常用格式有:dir、zip、tar、tar.gz
		dir 格式便于在本地测试打包结果
		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 package

7、部署

进入项目的 target/your-project-release 目录,运行 ./jfinal.sh start 即可启动项目。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 官网文档

的码云指数为
超过 的项目
加载中

评论(36)

l
little_ant
如果我不部署就没发用吗?
JFinal
JFinal 软件作者
不部署照样用,详见文档: https://www.jfinal.com/doc/1-2
张钰杰
张钰杰
这真的挺模糊的,对于入门JFinal很难
张钰杰
张钰杰
求一篇真正全面的打成jar包直接不熟运行的流程
JFinal
JFinal 软件作者
在 jfinal.com 官网下载 jfinal_demo_for_maven 这个 demo,所有打包所需的配置全有,打包文档也很详细:https://www.jfinal.com/doc/1-3
JFinal
JFinal 软件作者

引用来自“upos”的评论

请问,以前jfinal3.5的项目能转到 undertow下吗?怎么转?
可以转,转起来很容易:先将 jetty-server 的依赖删除,再添加 jfinal undertow 1.5 依赖,最后将原先启动代码 JFinal.start(...) 改成 UndertowServer.start(...) 即可,这里有详细的文档: https://www.jfinal.com/doc/1-2
upos
upos
请问,以前jfinal3.5的项目能转到 undertow下吗?怎么转?
JFinal
JFinal 软件作者

引用来自“心浪微勃”的评论

这介绍,跟搞传销的有一拼

引用来自“无名无处”的评论

形容词一多就是传销?
其实想想也可以理解这些人,因为这些人都是没去看代码的,所以无法相信项目介绍中表述的是事实。 只要稍微对比一下 jfinal undertow 与 spring devtools 中的热加载功能,jfinal undertow 实现同样的功能代码量比 spring devtools 少十倍以上,通过对比源码知道这个事才能逐步相信
平安OSC
平安OSC

引用来自“心浪微勃”的评论

这介绍,跟搞传销的有一拼
形容词一多就是传销?
JFinal
JFinal 软件作者

引用来自“心浪微勃”的评论

这介绍,跟搞传销的有一拼

引用来自“JFinal”的评论

还请指出哪句像传销,若符合的话,立即修改

引用来自“心浪微勃”的评论

从头到尾
认真对待你的反馈,你不重视,那就没办法了
谋定而动-知止而有得

引用来自“心浪微勃”的评论

这介绍,跟搞传销的有一拼

引用来自“JFinal”的评论

还请指出哪句像传销,若符合的话,立即修改
从头到尾
JFinal
JFinal 软件作者

引用来自“心浪微勃”的评论

这介绍,跟搞传销的有一拼
还请指出哪句像传销,若符合的话,立即修改

JFinal Undertow 1.5 发布,稳定、可靠服役于生产环境

jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目。独创 HotSwapClassLoader + HotSwapWatcher 以 319 行代码极简实现热加载开发与部署。 经过几个版本的迭代,jfinal undertow 已稳...

02/01 16:00

JFinal Undertow 1.4 发布,小版本迭代

JFinal Undertow 项目在公司内部试用两个月,在俱乐部内测一个月,在 2018-12-12 号才放出 jfinal undertow 1.3 版本,这个版本已经十分完善好用 jfinal underow 1.4 针对自 1.3 发布以来的一...

2018/12/25 15:32

JFinal Undertow 1.3 发布,从极速开发到极速上线

从 JFinal 3.0 重新定义模板引擎实现了 MVC + ORM 各层的极速开发(3.0 发布盛况传送门),到 JFinal 3.4 将极速贯彻到 UI 层,实现了 UI 层的极速开发 (3.4 发布盛况传送门),“开发过程” 的...

2018/12/12 17:06

没有更多内容

加载失败,请刷新页面

没有更多内容

1
回答
JFinal Undertow有没有像jfinal3.5_all那用带所有jar的环境供下载呢,maven老是出问题...

@jfinal 波总好,JFinal Undertow有没有像jfinal3.5_all那用带所有jar包的环境供下载呢,本地maven老是出各种问题.....

2018/12/18 16:48

没有更多内容

加载失败,请刷新页面

没有更多内容

JBolt-JFinal开发利器,新官网上线

JBolt,诞生于2016年8月,以Eclipse插件的形式提供给JFinal开发者无偿下载使用。(Idea版还在捣鼓...) 今天JBolt新版官网正式上线,欢迎访问学习交流和使用,有什么问题,在社区提问@我即可,...

07/21 14:19
169
0
JFinal新版sql模板有两种Template的调用方式,你学会了吗?

最近JBolt项目中升级到了最新版JFinal,很平滑,改了个版本号轻松完成。 昨天,突然想起JFinal的新版ChangeLog中提到了Model Db里都增加了关于Sql模板更方便的书写调用方式。 所以,JBolt开发...

07/01 02:21
8
0
Jboot v2.0_rc1

jboot 更新了2.0了,使用了jfinal-undertow,实现了热更新,所以赶紧尝试了一下,有一些小问题解决之后就完美的运行起来了。 1.jboot2.0使用了jfinal的AOP功能,但是还没有完全替换,所以还是要...

2018/12/27 15:27
9
0
JFinal爬虫-Jsoup是最好的 Java HTML 解析器,没有之一

去年,做了几个JFinal项目,大量使用了Java爬虫去全网抓取数据,清洗筛选后入库,成为本地结构化数据。 Java中JSOUP做HTML解析是最好的工具,没有之一。 之前听过一句话,大体意思就是 我们所...

07/01 02:23
99
0
学JFinal不迷路,JFinal优质资源列表(欢迎反馈更新)

学JFinal不迷路,记录一下JFinal相关的资源、产品、讲师等信息(所有信息排名不分先后)。 一、相关站点: 1、JFinal官网-问答、分享、文档、交流、俱乐部 http://www.jfinal.com 2 、JFina...

05/25 19:25
304
0
jfinal-lesscss使用java实现lesscss的动态编译

jfinal-coffeescript使用java实现coffeescript的动态编译,带有jfinal plugin

2014/09/12 12:21
80
0
jfinal-coffeescript使用java实现coffeescript的动态编译

jfinal-coffeescript使用java实现coffeescript的动态编译,带有jfinal plugin

2014/09/12 12:16
75
0
jfinal-shiro-freemarker实现shiro在freemarker页面的标签过滤

jfinal-shiro-freemarker实现shiro在freemarker页面的标签过滤,用于动态屏蔽页面的部分内容

2014/09/12 11:59
623
1
jfinal-sqlinxml 类似ibatis的sql语句存在xml文件里

jfinal-sqlinxml 类似ibatis的sql语句存在xml文件里

2014/09/12 13:47
238
0
jfinal-quartz 使用jfinal启动quartz执行定时任务

jfinal-quartz 使用jfinal启动quartz执行定时任务,大家尽可能关注(Follow)我的github(https://github.com/Dreampie),好及时得到插件的更新信息...

2014/09/12 13:26
1K
2

没有更多内容

加载失败,请刷新页面

返回顶部
顶部