第一篇文章1st Link 提到了将 Java 文件直接编译成 JAR 文件并避免构建过程中的一个步骤。有人知道吗?
-瓦迪拉杰
当你链接到我的博客文章时,我认为给你更新是公平的。
直接编译成 Jar 实际上相当简单。基本上你扩展
javax.tools.ForwardingJavaFileObject
然后覆盖openOutputStream
方法并将其定向到您的 Jar。由于 Java 编译器是高度并发的,但写入 jar 文件是高度连续的,我建议您缓冲到字节数组,然后有一个后台线程在字节数组到达时写入它们。
我正是这样做的,这是我的实验性构建工具 JCompilo https://code.google.com/p/jcompilo/ 这个工具完全没有文档记录,但速度很快。目前,它比任何其他 Java 构建工具快约 20-80%,比相同代码的 Scala 编译器快约 10 倍。
当作者谈论扩展编译器本身时,他可能了解编译器的内置功能(这就是编译器的能力,也许通过调整代码得到一点鼓励)。
现在我正在研究扩展 Java 6 编译器以删除不需要的文件存在检查,并可能直接在编译器中对类文件进行 jaring。[强调我的]
但是,该功能肯定不受官方支持( javac 网页上没有关于它的文档)。
充其量,该功能取决于编译器;可能需要修改编译器的源代码。