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

Java / Web项目中的NPM模块Browser-Sync相关推荐

  1. npm 引用子项目模块_Java / Web项目中的NPM模块Browser-Sync

    npm 引用子项目模块 Browser-Sync是一个方便的基于Node.js的NPM模块,可用于更快的Web开发. 浏览器同步可在许多设备之间同步文件更改和交互. 最重要的功能是实时重新加载. 我们 ...

  2. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  3. 在java web项目中编写自己的代码生成器

    在java web项目中编写自己的代码生成器 转载于:https://www.cnblogs.com/punisher/p/5909943.html

  4. java web项目中的根路径踩坑

    以下总结来自于颜群老师课堂笔记. java web项目中的"/"怎样区分? 项目根目录: WebContent \ src(所有的构建目录) 如果WebContent中有一个文件i ...

  5. Java Web项目中缺少Java EE 6 Libraries怎么添加

    Java Web项目中缺少Java EE 6 Libraries怎么添加 具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build P ...

  6. 实战:在Java Web项目中使用HBase

    在此之前我们使用MySQL作为数据源,但发现这数据增长速度太快,并且由于种种原因,因此必须使用HBase,所以我们要把Mysql表里面的数据迁移到HBase中,在这里我就不讲解.不争论为什么要使用HB ...

  7. Java Web项目中使用Freemarker生成Word文档

    Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就 ...

  8. Java Web项目中HTML文件中的汉字在浏览器中显示乱码的解决方案

    今天在做一个Java Web项目的时候,html中的汉字在浏览器中显示为乱码,分析其可能原因有: (1)html文件属性中有默认的编码方式,如果它的设置与html文档中content charset属 ...

  9. 在java web项目中实现随项目启动的额外操作

    前言 在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等.对于这种要求,目前个人 ...

最新文章

  1. IOS中Json解析的四种方法
  2. iview Table列表中增加字体图标
  3. MS SQLSERVER中如何快速获取表的记录总数
  4. python \__call__
  5. 如何使用IVT BlueSoleil 如何在电脑上使用蓝牙耳机
  6. 基于springboot乡村民宿系统
  7. demo是什么?demo有什么用?
  8. 「数字电子技术基础」6.触发器
  9. 《认知盈余:自由时间的力量》读书笔记
  10. 大数据智能算法及测评技术
  11. 学3D建模需要多久?
  12. 简单破解 Sencha Architect 2.2 (ExtJs Designer) - 李路平 - 博客园
  13. 四六级得分技巧备考和心态
  14. 华硕x450jn拆机_自己动手丨 轻松搞定华硕X450JN笔记本 内存扩展
  15. 积极主动沟通说话交流的重要性和案例以及技巧
  16. spring boot 启动
  17. (SWERC 2017)
  18. 提取LSV中的高程数据在CAD中进行道路的方案设计流程
  19. HOME: First Word —— 字符串分割、正则表达式
  20. Android异步消息处理机制之looper机制

热门文章

  1. [中级]Java命令学习系列(五)——jhat
  2. 彻底理解正向代理和反向代理
  3. 字符串substring方法在jkd6,7,8中的差异
  4. 如何查看python安装路径
  5. jquery选择器案例分享
  6. 多功能语音播放器上线啦~
  7. JS中函数的prototype属性和对象的__proto__属性
  8. python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
  9. 2020最新Java线程池入门(超详细)
  10. java分布式对象(RMI+部署使用RMI的程序)