指定されたディレクトリの下にあるすべてのJavaファイルを再帰的にコンパイルするjavacオプション 質問する

指定されたディレクトリの下にあるすべてのJavaファイルを再帰的にコンパイルするjavacオプション 質問する

私はプロジェクト内の Java ファイルをコンパイルするために javac コンパイラを使用しています。ファイルは、、、、のように複数のパッケージに分散されcom.vistas.utilていcom.vistas.converterます。com.vistas.LineHelpercom.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 行のコマンドでテスト/ビルドできるプロジェクトがあれば、新しい同僚や継続的インテグレーション サーバーなどに簡単に導入できます。簡単です :-)

おすすめ記事