1. ホーム
  2. java

[解決済み] javac オプションで、指定したディレクトリ以下のすべての java ファイルを再帰的にコンパイルする。

2022-04-29 22:53:14

質問

私のプロジェクトでは、javacコンパイラーを使ってjavaファイルをコンパイルしています。ファイルは、このようにいくつかのパッケージに分散されています。 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

(1行で)

多くのパスを与える代わりに、親ディレクトリの com ディレクトリからすべての java ファイルを再帰的にコンパイルするようにコンパイラに指示するにはどうすればよいですか?

どのように解決するのですか?

また、何らかのビルドツールを使用することをお勧めします ( アント または メイヴン が推奨されており、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プラグインがエラーを抑制するのが好きな場合です:-) もうひとつは、かなり多くのツールがMavenリポジトリでも動作することです(たとえば Sbt Scalaの場合。 アイビー はAnt用です。 グラドル Groovyの場合)。

IDEを使用する

さて、これで開発の生産性を上げることができるかもしれません。オープンソースの代替品もいくつかあります(たとえば エクリプス NetBeans 私は前者の方が好きです)、さらには商業的なもの(例えば IntelliJ ) は、かなり人気があり、強力です。

これらはバックグラウンドでプロジェクトの構築を管理してくれるので、コマンドラインでの作業をする必要がありません。しかし、もしあなたが 実際に起こること のようなエラーを突き止めることができます。 ClassNotFoundException .

補足説明

大規模なプロジェクトでは、常にIDEを使用することをお勧めします。 ビルドツールです。前者は生産性を向上させ、後者はプロジェクトで異なるIDEを使用することを可能にします(例えば、MavenはEclipseのプロジェクト・ディスクリプタを簡単な操作で生成することができます)。 mvn eclipse:eclipse コマンドを使用します)。さらに、1行のコマンドでテスト/ビルドできるプロジェクトがあれば、新しい同僚や継続的インテグレーションサーバーなどに簡単に導入することができます。楽勝です :-)