我的公司选择使用IntelliJ进行开发和部署到本地Tomcat服务器.我一直在gVim上进行开发,并且不想改变.
当我们使用eclipse时,我可以在外部更改文件时使用eclipse重新发布资源. (我相信设置是使用本机钩子或轮询刷新)这很棒,因为我更喜欢使用命令行工具来集成它们.
我们正在使用IntelliJ来管理服务器,我很好,但是我不想破坏我当前的工作流程.
我知道IntelliJ很好地保持同步,当我专注于它时会更新文件,并在我离开框架时刷新它们.
有没有办法让智能更新资源在外部更改(Gvim,cli git … ext)而无需转移到它?
最佳答案 遗憾的是,我一直无法找到监视外部更改的方法并更新IntelliJ中的Tomcat服务器.
我已经使用grunt实现了一种解决方法. (node.js任务运行器)
这种解决方法背后的理论很简单:
> Tomcat发动爆炸战争
> grunt看我的前端文件
>当文件发生变化时,grunt将我的前端文件移动到爆炸的战争中
这样做的一些好处是:
>适用于任何外部编辑器/工具/等(vim,崇高文本,nano,cli git,以及您能想到的任何其他)
>您无需进入intelliJ即可更新资源.
>不需要java来设置此解决方案.
向下是
>你有一个额外的进程在运行.
>你有另一个工具来处理.
>你需要在爆发的战争中部署前端的东西(在我看来并不是那么糟糕)
要了解有关grunt的更多信息并进行设置,您可以访问gruntjs.com.
此解决方法使用两个插件
> grunt-contrib-copy
> grunt-contrib-watch
首先,您设置一个将文件复制到爆炸战争中的任务.这将使用grunt-contrib-copy插件,并且可能会进行一些改进,但这并不算太糟糕.我看起来像这样:
copy:{
webfilesToOutdir:{
files: [
{expand: true, src: ['WebContent/**'],
dest: '../out/artifacts/attensity-q/exploded/attensity-q.war',
rename: function(dest, src){
var ret = dest+"/"+ src.replace('WebContent/', '');
return ret;
}
}
]
}
}
接下来,您将需要一个任务来查看文件并在发生更改时运行副本.这将使用grunt-contrib-watch再次没有什么不好,你只需要调整路径.这是我的:
watch: {
web: {
files: ['WebContent/**', '!WebContent/less/**'],
tasks: 'copy:webfilesToOutdir',
interrupt: true
}
}
我希望这有帮助.我已经使用这个解决方案已经有一段时间了,它已经完成了它的工作.祝你好运,温柔的男人.