新しいプロジェクトでは、maven を使用しています。ant ターゲットを使用して ant で解決した問題を見つけましたdepend
。問題は、他のクラスから参照されている public フィールドを持つクラスがあることです。これらのフィールドのいずれかを削除すると、コードはコンパイルされませんが、特定のクラスはコンパイルされますが、それを参照するすべてのクラスはコンパイルされないようです。
maven は ant の依存と同様の機能を提供しますか、それとも何か間違ったことをしていますか?
私の知る限りant depend
、mavenにはありません。ただし、コンパイル プラグインは変更を検出して再コンパイルする必要があります。しかし、maven compile は javac を使用しているため、関連するすべての変更を正しく検出できないという問題がありました (javac だけで Ant プロジェクトをビルドする場合と同じ問題です)。
maven-compiler-plugin:2.3.2 を使用してプロジェクトでテストを行ったところ、問題が発生しました。ただし、pom で新しいコンパイラ プラグインを指定すると、問題はなくなります。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
その後、彼はさらにクラスをコンパイルし、それが機能します。また、他のコンパイラを javac として使用することもできます。これは、eclipse のようなインクリメンタル ビルドにより適しています。非 javac コンパイラ ドキュメントを参照してください。
リリース ビルドではmvn clean package
、プロジェクトが完全にコンパイルされ、古いファイルに悩まされていないことを確認できるように、常に使用することをお勧めします。
アップデート:
2.3.2 バージョンを使用していたため、問題に関連している可能性があるエラーMCOMPILER-160も見つかりました。そのため、コンパイラのバージョンも確認してください。