私はプロジェクト内の Java ファイルをコンパイルするために javac コンパイラを使用しています。ファイルは、、、、のように複数のパッケージに分散されcom.vistas.util
ていcom.vistas.converter
ます。com.vistas.LineHelper
com.current.mdcontect
これらのパッケージにはそれぞれ複数の Java ファイルがあります。私は次のように javac を使用しています:
javac com/vistas/util/*.java com/vistas/converter/*.java
com.vistas.LineHelper/*.java com/current/mdcontect/*.java
(一行で)
多数のパスを指定する代わりに、親 com ディレクトリからすべての Java ファイルを再帰的にコンパイルするようにコンパイラに要求するにはどうすればよいですか?
ベストアンサー1
また、何らかのビルドツールを使用することをお勧めします(蟻またはメイヴン、Antはすでに提案されており、始めるのが簡単です)またはコンパイルを処理するIDE(Eclipseは調整戦略による増分コンパイルを使用しており、"コンパイル"ボタン)。
Javacの使用
より大きなプロジェクトで何かを試す必要があり、近くに適切なビルド ツールがない場合は、javac
コンパイルするクラス名をファイルで指定できるという小さなトリックをいつでも使用できます。プレフィックスjavac
付きのファイル名を渡すだけです@
。
*.java
プロジェクト内のすべてのファイルのリストを作成できれば、簡単です。
# Linux / MacOS
$ find -name "*.java" > sources.txt
$ javac @sources.txt
:: Windows
> dir /s /B *.java > sources.txt
> javac @sources.txt
- 利点それは、迅速かつ簡単な解決策であるということです。
- 欠点
sources.txt
問題は、新しいソースを作成するたび、または既存のファイルの名前を変更するたびにファイルを再生成する必要があることです。これは忘れやすく (したがってエラーが発生しやすい)、面倒な作業です。
ビルドツールの使用
長期的には、ソフトウェアを構築するために設計されたツールを使用する方が良いでしょう。
Antの使用
build.xml
ソフトウェアの構築方法を記述した簡単なファイルを作成する場合:
<project default="compile">
<target name="compile">
<mkdir dir="bin"/>
<javac srcdir="src" destdir="bin"/>
</target>
</project>
次のコマンドを実行すると、ソフトウェア全体をコンパイルできます。
$ ant
- 利点拡張しやすい標準ビルド ツールを使用していることです。
- 欠点欠点は、追加のツールをダウンロードしてセットアップし、使い方を習得する必要があることです。ほとんどの IDE (NetBeans や Eclipse など) はビルド ファイルの作成に優れたサポートを提供しているため、この場合は何もダウンロードする必要はありません。
Mavenの使用
Mavenの設定や操作はそれほど簡単ではありませんが、習得すれば大きな成果が得られます。5分以内にプロジェクトを開始する。
- その主な利点は(私にとって) 重要なのは、依存関係も処理するため、これ以上 Jar ファイルをダウンロードして手動で管理する必要がなくなり、大規模なプロジェクトの構築、パッケージ化、テストに便利であるということです。
- 欠点問題は、学習曲線が急峻であることと、Mavenプラグインがエラーを抑制することにあります:-) もう1つは、多くのツールがMavenリポジトリでも動作することです(スビットScalaの場合、アイビーアントの場合、グラドルGroovy 用)。
IDEの使用
では、開発の生産性を向上させるにはどうすればよいでしょうか。オープンソースの代替手段がいくつかあります(日食そしてネットビーンズ(私は前者が好きです)そして商業的なもの(インテリJ)は非常に人気があり強力です。
プロジェクトのビルドをバックグラウンドで管理できるので、コマンドラインでの操作に煩わされることはありません。しかし、実際に起こるバックグラウンドで実行されるので、 のような偶発的なエラーを追跡できますClassNotFoundException
。
もう一つの注意点
大規模なプロジェクトでは、IDEを使用することをお勧めします。そしてビルド ツール。前者は生産性を向上させ、後者はプロジェクトでさまざまな IDE を使用できるようにします (たとえば、Maven は簡単なmvn eclipse:eclipse
コマンドで Eclipse プロジェクト記述子を生成できます)。さらに、1 行のコマンドでテスト/ビルドできるプロジェクトがあれば、新しい同僚や継続的インテグレーション サーバーなどに簡単に導入できます。簡単です :-)