最初の記事の1stLink は、JavaファイルをJARファイルに直接コンパイルし、ビルドプロセスの1つのステップを回避することについて言及しています。誰かがこれを知っていますか?
-Vadiraj
あなたが私のブログ投稿にリンクしているので、私はあなたに最新情報を与えることは公正であると思いました。
Jarに直接コンパイルするのは、実際にはかなり簡単です。基本的にあなたは拡張します
javax.tools.ForwardingJavaFileObject
次に、メソッドをオーバーライドopenOutputStream
して、Jarに転送します。Javaコンパイラは非常に同時ですが、jarファイルへの書き込みは非常にシーケンシャルであるため、バイト配列にバッファリングしてから、バイト配列が到着したときに書き込むバックグラウンドスレッドを用意することをお勧めします。
私はまさにこれが私の実験的なビルドツールであるJCompilohttps : //code.google.com/p/jcompilo/ このツールは完全に文書化されていませんが、非常に高速です。現在、他のJavaビルドツールよりも約20〜80%速く、同じコードのScalaコンパイラよりも約10倍高速です。
著者がコンパイラ自体の拡張について話しているので、彼はコンパイラの組み込み機能についての知識を持っている可能性があります(それは、おそらくコードを微調整することによって少し励まして、コンパイラができることです)。
現在、Java 6コンパイラを拡張して、不要なファイルが存在するかどうかをチェックし、コンパイラでクラスファイルを直接jarする可能性を調査しています。[強調鉱山]
ただし、その機能は確かに公式にはサポートされていません( javac Webページにそれに関するドキュメントはありません)。
せいぜい、この機能はコンパイラに依存します。コンパイラのソースコードの変更が必要になる可能性があります。