在我的IDEA项目中,Scala模块依赖于Java模块.当我尝试编译Scala模块时,只触发scalac.它编译Java和Scala源代码.
我希望scalac只编译Scala模块,因为javac对Java源代码来说要快得多(而且我的Java项目很重要). 如何让IDEA为不同的模块使用不同的编译器?
我的解决方法是(对于Java模块的每个依赖项):
显然我对此并不满意,因为每次重新导入Maven项目时,我都需要重复所有这些以便快速编译.我希望有人知道更好的方法.
澄清:我想强调,像SBT或Maven这样的工具无法解决我的问题.它不仅仅是编译.它是关于IDEA中的编译,对于像Scala Worksheet或从IDEA运行单元测试所需.我的目标是使用SBT的编译速度获得全方位的IDEA细节(语法高亮,智能自动完成,自动导入等).现在我必须要么容忍很长的编译时间(由于我的Java模块的依赖性),要么在SBT中使用裸机REPL和测试.
我的基于 JVM 的应用程序在 Amazon ECS 上运行。在某些我无法在测试环境中重现的情况下,它会因 OutOfMemoryError 而崩溃。我想捕获 JVM 堆转储(使用HeapDumpOnOutOfMemoryError)来查看发生了什么。但有一个问题 - 因为我的应用程序使用大量内存,堆转储需要很长时间,并且 ECS 会在中间杀死容器,因为运行状况检查失败。我最终得到了一个无法使用的、被截断的转储文件。
我可以通过更改运行状况检查配置来获得正确的堆转储,但这可能会影响 ECS 服务,因为如果没有良好的运行状况检查,集群可能会运行无响应的实例。
我正在寻找一种方法,可以让我自动捕获堆转储,同时对生产集群的影响尽可能小。