Java / Web项目中的NPM模块Browser-Sync

Browser-Sync是一个方便的基于Node.js的NPM模块,可用于更快的Web开发。 浏览器同步可在许多设备之间同步文件更改和交互。 最重要的功能是实时重新加载。 我们也可以在Java / Web项目中使用Browser-Sync。 Cagatay Civici创造了一个伟大的
视频教程如何在PrimeFaces展示柜中使用此模块。 PrimeFaces展示柜具有内置的Jetty服务器,该服务器将源文件夹src / main / webapp查找为Web上下文根。 通过Node.js软件包管理器NPM安装浏览器同步后

npm install -g browser-sync

我们必须在http:// localhost:8080 / showcase上启动PrimeFaces展示柜的Jetty服务器。 此外,我们可以将此URL用作Browser-Sync中包含的内置服务器的代理。 Browser-Sync应该侦听src / main / webapp下的更改

browser-sync start --proxy "http://localhost:8080/showcase" --files "src/main/webapp/**/*"

结果,将在带有PrimeFaces展示柜的http:// localhost:3000 / showcase中启动默认浏览器。 端口3000是Browser-Sync的默认端口。

在对Java文件进行更改之前,此方法将很好地起作用。 Java文件不是src / main / webapp下的Web资源。 在Maven项目中,它们位于src / main / java下 。 这意味着将无法识别Java文件中的更改。 解决方案是WAR爆炸 。 爆炸的WAR是从中部署Web应用程序的目录。 每个应用程序服务器都可以部署爆炸的WAR。 对于Maven项目,该目录通常为target / webapp 。 Maven WAR插件的目标是war:也爆炸了。 如果您有IDE,则可以将Web应用程序配置为爆炸式WAR。 几年前,我已经用IntelliJ IDEA发表了有关热部署的博客。 在IntelliJ中,您可以将更改的文件(CSS,JS,HTML资源和已编译的Java文件)自动复制到爆炸的WAR的目录中。

运行配置

现在,如果您手动刷新浏览器,您还将看到Java类中的更改。 但我们希望做得更好。 我们要使用广受赞誉的实时重新加载! 为了实现此目标,请按以下方式设置要监视的文件

browser-sync start --proxy "http://localhost:8080/showcase" --files "target/classes/**/*.class, target/webapp/**/*"

输出看起来像

[BS] Proxying: http://localhost:8080
[BS] Access URLs:---------------------------------------------------------------------Local: http://localhost:3000/showcaseExternal: http://192.168.178.27:3000/showcase---------------------------------------------------------------------UI: http://localhost:3001UI External: http://192.168.178.27:3001---------------------------------------------------------------------

现在,我可以对所有重要文件进行任何更改,并在控制台中看到类似的内容

[BS] Watching files...
[BS] File changed: target\webapp\META-INF\MANIFEST.MF
[BS] File changed: target\webapp\WEB-INF\classes\some\showcase\bean\SomeBean.class
[BS] File changed: target\webapp\views\someView.xhtml
[BS] File changed: target\webapp\META-INF\MANIFEST.MF

浏览器页面由Browser-Sync自动更新(顺便使用WebSocket)。 如果您的IDE遇到问题,可以使用Gulp进行救援! 这是我对gulpfile.js的想法(Gulp 4)。

var browsersync = require('browser-sync').create();// init Browser-Sync
gulp.task('browser-sync', function() {browsersync.init({proxy: "http://localhost:8080/my-showcase"});
});// compile changed Java files by Maven "mvn compile"
// compiled classes will be transfered to target/classes automatically
gulp.task('java', function () {// use 'spawn' to execute command using Node.jsvar spawn = require('child_process').spawn;// set the working directory to project root where gulpfile.js existsprocess.chdir(__dirname);// run "mvn compile"var child = spawn('mvn', ['compile']);// print outputchild.stdout.on('data', function(data) {if (data) {console.log(data.toString());}});
});// copy changes from src/main/webapp to target/webapp 
gulp.task('webapp', function () {return gulp.src('src/main/webapp/**/*', since: {gulp.lastRun('webapp')}).pipe(gulp.dest('target/webapp'));
});// watch files for changes
gulp.task('watch', function () {gulp.watch('src/main/java/**/*.java', ['java']);gulp.watch('src/main/webapp/**/*', ['webapp']);gulp.watch(['target/classes/**/*.class', 'target/webapp/**/*'], browsersync.reload);
});// default task
gulp.task('default', gulp.series('browser-sync', 'watch'));

该文件应放在项目根文件夹中。 现在,您可以执行命令了(当然应该安装Gulp了)

gulp

并享受现场重装! 请考虑一下Gulp java任务。 Maven仅编译更改的文件。 它运作非常快! 如果不做任何更改,则无需编译-mvn compile的输出如下所示:

[INFO] Nothing to compile - all classes are up to date

如果我们在一个Java文件中进行更改,则输出如下所示:

[INFO] Compiling 1 source file to <path>\showcase\target\classes

我还可以想象一些复杂的Gulp任务,例如在相关的JAR文件中编译Java类,构建JAR并将其复制到爆炸的WAR的WEB-INF / lib文件夹中。

翻译自: https://www.javacodegeeks.com/2016/05/npm-module-browser-sync-java-web-projects.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置vs2008代码区的背景色

编写程序、调试代码时&#xff0c;是不是感觉文字的白色背景有些刺眼呢&#xff1f;vs2008 给我们提供了改变背景色的功能。 依次展开&#xff1a;工具->选项->环境->字体和颜色&#xff0c;可以看到下图所示设置框。 首先&#xff0c;在图中标记的“显示项”一栏选择…

bzoj3277 串 (后缀数组+二分答案+ST表)

常见操作&#xff1a;先把所有串都连到一起&#xff0c;但中间加上一个特殊的符号&#xff08;不能在原串中/出现过&#xff09;作为分割 由于全部的子串就等于所有后缀的所有前缀&#xff0c;那我们对于每一个后缀&#xff0c;去求一个最长的前缀&#xff0c;来满足这个前缀在…

微型计算机实验报告温度控制,单片机、可编程控制器实验教学大纲.doc

单片机、可编程控制器实验教学大纲.doc单片机、可编程控制器实验教学大纲 一、实验课的性质与任务 本实验课是在学生学完单片机原理与应用课程之后&#xff0c;为巩固提高所学知识&#xff0c;而安排的一次综合设计实验。通过本实验使学生将所学的单片机硬件结构、工作原理、编…

电脑word在哪_Word论文里的公式怎么编辑?这4个小工具帮你一分钟搞定!

临近毕业时&#xff0c;不少小可爱都在为论文头秃&#xff01;搜索并下载论文&#xff0c;论文排版&#xff0c;论文查重&#xff0c;这些我们之前已经写过相关文章啦&#xff01;Tools指南推荐搜索论文论文排版论文查重论文网站今天&#xff0c;再来给大家分享一个写论文时经常…

RTree算法及介绍

空间索引是对存储在介质上的数据位置信息的描述&#xff0c;用来提高系统对数据获取的效率。GIS涉及的各种海量复杂数据存储于外存&#xff0c;如果对磁盘上的数据的位置不加以记录和组织&#xff0c;每查询一个数据项都要扫描整个数据文件&#xff0c;则这种访问磁盘的代价将严…

文件桌面跟计算机同步删除吗,电脑里桌面文件被不慎覆盖了如何恢?

2007-10-30如何恢复桌面图标不小心将某个程序的桌面Windows桌面图标是启动计算机一定程序或文档的开关,Windows桌面的图标分为两类&#xff1a;快捷图标和默认图标。快捷图标主要由应用程序安装时自动创建或计算机使用者人为创建&#xff0c;用一个从左下向右上斜指的小箭头来标…

win10易升_微软Win10版本20H2正式版官方ISO镜像下载大全_windows10_Windows系列_操作系统...

10月21日&#xff0c;微软推送了 Windows 10 十月更新版 20H2 系统更新。我个人认为微软 Win10 版本 20H2 正式版官方 ISO 镜像下载大全&#xff1a;此次系统版本(20H2)更新相对于上一版 20H1 正式版&#xff0c;这次十月更新的 20H2 正式版可能是很棒的一个版本&#xff0c;因…

乐观锁的两种实现方式

什么场景下需要使用锁&#xff1f; 在多节点部署或者多线程执行时&#xff0c;同一个时间可能有多个线程更新相同数据&#xff0c;产生冲突&#xff0c;这就是并发问题。这样的情况下会出现以下问题&#xff1a;更新丢失&#xff1a;一个事务更新数据后&#xff0c;被另一个更新…

c++编译时候fatal error C1075: end of file found before the left brace '{' at

出现 C:\Users\acer\Downloads\Cpp2.cpp(591) : fatal error C1075: end of file found before the left brace { at C:\Users\acer\Downloads\Cpp2.cpp(357) was matched 执行 cl.exe 时出错. 谁知道怎么求改&#xff1f;&#xff1f; 答&#xff1a; 程序中 {} 不是成对出现…

Cloud Foundry Java客户端–流事件

Cloud Foundry Java客户端提供了基于Java的绑定&#xff0c;用于与正在运行的Cloud Foundry实例进行交互。 这个项目的优点之一是它采用了基于Reactive Stream的API作为方法签名&#xff0c;特别是使用Reactor实现&#xff0c;这在使用流数据时特别有用。 在这篇文章中&#x…

vue导入html登陆页,Vue 实现 登陆后打开主页面(登陆组件 + 主页面组件)

本次演示&#xff0c;项目所需iview&#xff0c;router首先在 views 目录 新建 两个 组件 ( login.vue &#xff0c;index.vue )login.vue登录登 录export default {methods: {login() {// 假设登陆成功&#xff0c;则跳转到 index 组件this.$router.replace(/index);}}}backgr…

设置窗口大小

window.resizeTo(screen.availWidth, screen.availHeight);转载于:https://www.cnblogs.com/7q4w1e/p/9680037.html

android IO流_Flutter实战经验(十):打包和发布到 Android 平台

本文适合ios开发者不清楚Android上架机制学习。在一般的开发过程中&#xff0c;我们可以使用 flutter run 命令&#xff0c;或者 IntelliJ 工具栏中的 Run 和 Debug 来测试 app。这时候&#xff0c;Flutter 默认会为我们构建 app 的调试版本。当想要发布 app 时&#xff0c;比如…

西安单招学校学计算机软件的,西北大学软件职业技术学院单招

西北大学肇始于1902年的陕西大学堂和京师大学堂速成科仕学馆&#xff0c;1912年始称西北大学&#xff0c;1978年被确定为全国重点大学。现为国家“211工程”建设院校、教育部与陕西省共建高校。在长期的办学历程中&#xff0c;西北大学形成了“发扬民族精神&#xff0c;融合世界…

autojs遍历当前页面所有控件_PyQT5控件:容器(Containers Widgets)

QWidget主窗体容器 在Qt设计师中新建文件&#xff0c;选择QWidget QWidget属性 enabled 窗口部件是否有效geometry 窗口部件相对于其父窗口的几何图形&#xff0c;并排除窗口框架sizePolicy 窗口部件的默认布局行为minimumSize 窗口部部件的最小尺寸&#xff08;以像素为单位&a…

JAVA 技术类分享(一)

一、dubbo dubbo原理模型&#xff1f; 主要是注册中心&#xff0c;服务提供者&#xff0c;服务消费者&#xff0c;监控中心&#xff0c;其中后者可有可无。1.服务端&#xff0c;在注册中心注册自己提供的服务&#xff0c;并暴露端口&#xff0c;2.客户端在注册中心注册&#xf…

计算机的就业指导论文,计算机就业指导期刊文章参考文献 计算机就业指导专著类参考文献有哪些...

为论文写作提供【100个】计算机就业指导期刊文章参考文献,海量计算机就业指导相关论文参考文献,包括期刊,专著,外文参考文献,解决您的计算机就业指导专著类参考文献有哪些的相关难题&#xff01;一、计算机就业指导论文参考文献范文[1]“基于就业岗位需求”的专业课程体系建设的…

junit rule_使用JUnit的ExpectedException和@Rule测试自定义异常

junit rule异常测试 为什么要测试异常流&#xff1f; 就像所有代码一样&#xff0c;测试覆盖率在代码和应该产生的业务功能之间写了一个合同&#xff0c;从而为您提供了代码的有效文档 &#xff0c;以及可以尽早且经常强调功能的附加功能。 我不会介绍测试的许多好处&#xff0…

经纬度1秒约等于多少米?

WGS84坐标系统下&#xff08;通常我们采用的GPS内的坐标系统&#xff09; 如果是中国常用的WGS1984的经纬度坐标&#xff0c;1秒相当于33米。具体如下&#xff1a; 经度1度85.39km 经度1分 1.42km 经度1秒 23.6m 纬度1度 大约111km 纬度1分 大约1.85km 纬度1秒 大约30.9m

学计算机单招可以报那几个公立学校,为什么要选择公办单招学校,四川公办单招学校有哪些?...

高职单招单招被称为春季高考&#xff0c;在四川参加单招考试的学生逐年上升&#xff0c;周时参加单招的高职院校也越来越多。但是单招不像是高考可以通过不同的志愿&#xff0c;来填报多所学校。单招只能选择某一个学校&#xff0c;一旦确定就不能更改。这样的结果就是选择学校…