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

我的公司选择使用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
    }
}

我希望这有帮助.我已经使用这个解决方案已经有一段时间了,它已经完成了它的工作.祝你好运,温柔的男人.

点赞