2012-11-16 16 views
9

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

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

+0

あなたのポンポンのようないくつかの詳細を追加してください(少なくとも戦争のようなパッケージ、瓶など)、フォルダ構造、新しいファイルなどを追加したパス –

+0

私は、パッケージ化が私の質問ではJARであると言いました。他の詳細については、申し訳ありませんが、私はどのように質問に役立つか分かりません。とにかく私はいくつかのプロプライエタリなコードを扱っているので、私はサンプル値しか提供できません。 – Vasan

+0

実際、私はちょうどあなたのファイルがどこにあるのかを知りたかったのです。しかし、とにかく、あなたが造りをしていると言っているように、ビルドはうまく動作します。あなたが行うことができるいくつかのことは、あなたのEclipseにMavenプラグインが正しく設定されているかどうかを確認することです。あなたはeclipseで単にプロジェクトを追加するのではなく、eclipseで "Maven Project"としてあなたのプロジェクトを "インポート"して、それをmaven buildと同期させる必要があります。 –

答えて

8

Maven Compilerプラグインは、ソースファイルごとに1つの引数(the sourcefiles version of the javac callを使用)を引数として持つjavacに渡される引数を含むコマンドラインコールを内部的にアセンブルします。アノテーション処理のようなメタ機能のために実際のソースフォルダも渡しますが、個々のソースファイルがjavacに渡されるとき、これらが優先され、コンパイラはどのファイルがどのソースフォルダに属しているかを知る効率的な方法がなく、 tパッケージ構造を検証します。

のMavenコンパイラプラグインは内部的にPlexus Compiler APIを使用し、あなたがこの2つのクラスでは、関連するコードを見つけることができます。

+0

簡潔な答えとポインタのおかげで感謝します! – Vasan

関連する問題