一、问题
最近基于JSR269做的代码插桩有一个编译问题需要定位,而且问题不是每次都能复现,需要多编译几次才行,出问题的项目是Maven构建的,相对较大,每次构建耗时就比较长。所以我就想,是否有什么配置项能加快编译的速度,比如:并行编译?最近在看Javac源码,也的确没有发现有任何多线程处理源码编译的痕迹。
二、过程
经过一番Google发现不只我有此疑问,在文章最后放上了检索的一些链接。有一个典型的声音:
Javac is a very fast compiler. If you have a project that’s so large as to bottleneck on compilation time, I’m impressed.
意思就是javac编译速度很快,很难有项目的源码能大到成为编译期的瓶颈。But...当前的问题是:项目编译时间比较长。
三、结果
经过一番搜索,确定了两件事:
- 确定了javac本身是不支持并行的,还翻到了一篇论文就是研究并行编译的
- Maven 3.x之后可以并行构建了,可以提高构建速度,模块依赖Maven会自动保证,不需要担心
命令可以这么写:
mvn -T 1C clean install
详细参考,试了一下,执行速度提升了一倍多。
IDEA里也是可以配置的: