在外部更改文件时,IntelliJ可以在Tomcat上更新资源吗?

Ben*_*min 5 vim tomcat editor intellij-idea auto-update

我公司选择与IntelliJ一起开发和部署到本地Tomcat服务器。我一直在gVim上进行开发,不希望更改。

当我们使用eclipse时,可以在外部更改文件时让eclipse重新发布资源。(我相信设置是使用本机钩子或轮询来刷新),这很棒,因为我更喜欢使用命令行工具来集成它们。

我可以使用IntelliJ来管理服务器,但是我不希望中断当前的工作流程。

我知道IntelliJ保持很好的同步性,当我专注于IntelliJ时会更新文件,而在离开框架时会刷新它们。

有没有办法让intelliJ更新在外部更改的资源(Gvim,cli git ... ext)而无需移至该资源?

Ben*_*min 2

遗憾的是,我一直无法找到一种方法来监视外部更改并更新 IntelliJ 内的 Tomcat 服务器。

我已经使用 grunt 实现了一个解决方法。(一个 Node.js 任务运行器)

此解决方法背后的理论很简单:

  • 雄猫服务于爆炸性的战争
  • grunt 监视我的前端文件
  • 当文件更改时 grunt 将我的前端文件移动到爆炸战争中

这样做的一些好处是:

  • 适用于任何外部编辑器/工具/等(vim、sublime text、nano、cli git 以及您能想到的任何其他编辑器)
  • 您不需要迁移到 intelliJ 来更新您的资源。
  • 设置此解决方案不需要 java。

缺点是

  • 你有一个额外的进程正在运行。
  • 你还有另一个工具要处理。
  • 你需要在爆发的战争中部署前端的东西(在我看来并不是那么糟糕)

要了解有关 grunt 的更多信息并进行设置,您可以访问gruntjs.com

此解决方法使用两个插件

  • grunt-contrib-复制
  • grunt-contrib-手表

首先,您设置一个任务,将文件复制到爆炸的战争中。这将使用 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;
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,您将需要一项任务来监视文件并在发生更改时运行副本。这将使用 grunt-contrib-watch ,这也没什么坏处,您只需要调整路径即可。这是我的:

watch: {
    web: {
        files: ['WebContent/**', '!WebContent/less/**'],
        tasks: 'copy:webfilesToOutdir',
        interrupt: true
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。我已经使用这个解决方案有一段时间了,它的工作效果非常好。祝你好运,温柔的男人们。