11

Javaファイルを含むMavenプロジェクト (JAR としてパッケージ化) があります。最近、新しいJavaソース ファイルがこのプロジェクトに追加されました。Java ファイルが追加されたパスがそのパッケージ宣言と一致しません。予想通り、Eclipse は不一致のクラスにエラーを表示します。ただし、Maven はプロジェクトを正常にビルドします。生成された JAR ファイルでは、パッケージ宣言で示されたパスに .class ファイルが存在します。Java ソース ファイルを別の不適切なフォルダー (つまり、パッケージ宣言とは異なるフォルダー) に移動しようとしましたが、Maven がプロジェクトを正常にビルドするたびに。

では、Maven は .java ファイルが存在する実際のディレクトリを無視するのでしょうか? パッケージ宣言のみを考慮していますか?

4

1 に答える 1

9

Maven Compiler プラグインは、javac に渡される引数を含むコマンド ライン呼び出しを、ソース ファイルごとに 1 つの引数として内部的にアセンブルします ( javac callsourcefilesバージョンを使用)。注釈処理などのメタ機能にも実際のソースフォルダーを渡しますが、個々のソースファイルが javac に渡されると、これらが優先され、コンパイラーにはどのファイルがどのソースフォルダーに属しているかを効率的に見つける方法がないため、できません。パッケージ構造を検証します。

Maven Compiler Plugin は内部でPlexus Compiler APIを使用しており、関連するコードは次の 2 つのクラスで見つけることができます。

于 2012-11-16T10:42:17.820 に答える