远程Java编译器

我正在寻找一种方法来提高我的团队的工作效率,一种方法是缩短编译和unit testing所需的时间,并打包和部署我们的Java EE应用程序,这个应用程序越来越大。

我所知道的简单解决方案是建立一台function强大的计算机,它具有N个处理器(N~ =开发人员数量)和极快的磁盘系统和大量内存,并在此计算机上运行所有内容并通过X远程连接到它。 它肯定比编译我们的笔记本电脑快得多,但仍然比购买每个开发人员他/她自己的超级计算机更便宜和更容易维护。

有没有其他方法可以解决这个问题? 例如,我们可以在本地运行我们的IDE然后告诉它远程编译java源代码吗? Netbeans / Eclipse / IntelliJ /等可以这样做吗? 或者是否有一个特殊的工具可以实现远程Java编译,也可以使用多个处理器? 它不一定是免费/开源的。

不幸的是我们的笔记本电脑必须运行一个(公司管理的)Windows Vista,所以另一个原因就是让我们在它上面使用linux并最终摆脱恼人的托管环境。

编辑:总结到目前为止的答案,缩短构建时间的一种方法是单独为开发人员保留编译(因为编译应该是快速的),跳过运行unit testing和热部署(没有打包)到容器。

然后,当开发人员决定检查他/她的代码时,会触发持续集成服务器(如Hudson)来清理和构建并运行测试以及打包和部署。

解决方案 :我已经接受了Thorbjørn的答案,因为我认为这将是我最接近我计划进行的方式。 虽然出于好奇,我仍然有兴趣解决原始问题(=远程Java编译)…

您基本上需要两个工作流程。

  1. 检查源的OFFICIAL构建,从头开始构建整个事物,运行所有unit testing,然后构建最终将在测试后发送给客户的位。
  2. 每个源代码更改为IDE知道的容器后,开发人员进行热部署。

这两者实际上可能大不相同!

对于官方构建,让Jenkins启动并运行并告诉它在发生更改时观察源存储库并构建(并告诉那些打破构建的人)。 如果您可以使用大型计算机进行构建,请将其用于此目的。

对于开发人员,请查看具有非常好的IDE部署选项的合适容器,并将其设置为适用于每个开发人员。 这将很快得到回报! JBoss以前非常适合这个目的。

而且,不,我不知道有效的远程Java编译选项,我不认为这是你应该为开发人员追求的。


了解Joel对构建服务器的看法: http : //www.joelonsoftware.com/articles/fog0000000023.html

如果你不喜欢jenkins,那么还有很多其他人。

(2016年编辑:Hudson改为Jenkins。有关更改名称的历史,请参阅https://stackoverflow.com/a/4974032/53897 )

设置构建服务器很常见,例如运行hudson来进行编译/打包/unit testing/部署。

虽然您可能仍然需要客户端至少执行编译。 转移到使用构建服务器,如果您现在不使用构建服务器,则可能需要更改工作流程 – 例如,如果目标是从客户端计算机上卸载,您的开发人员将检查代码,自动unit testing运行,而不是先运行unit testing,然后检入。

您可以在强大的计算机上使用ntfs挂载每个开发人员目录,然后在Eclipse中创建外部工具配置(GUI访问),这将触发在外部服务器上构建。

JavaRebel也可以提高生产力。 它消除了重新部署的需要。您可以重新编译单个文件,并查看直接在服务器上应用的更改。

当事情开始变得太大而无法进行高效构建时,可能是时候调查将代码分解为模块/ JAR(它如何分解将取决于许多项目细节以及您的团队如何工作)。 如果你找到一个好的设置,你可以减少编译(不总是需要重建整个项目)和更多/更快的复制/ jaring到达你可以测试新代码的点。

您的项目需要的是构建系统,以便为您进行构建,测试和打包。 Hudson是这种持续集成构建系统的一个很好的例子。