バックグラウンド:
JRE 1.7をmaven
ターゲットとするベースのJavaプロジェクトがありますが、ソースコードはラムダを使用retrolambda
しているため、Java 8
ソースコードをJava 7
. また、streams、function.*、Optional などが必要な場合は、StreamSupportバックポート ライブラリを使用します。
の使用にretrolambda
は、プロジェクトのソース言語とターゲット言語の両方のレベルを 1.8 に構成することが含まれます。
java8 のクラスまたはメソッド ( java.util.stream.*
、java.util.Optional
、または で導入されたメソッドjava8
などCollection.forEach
) に依存関係がなければ、すべて正常に動作します。そのような使用法がある場合、ビルドはパスしますが、Java 8 の JVM で実行すると、実行時に失敗します。
質問:
私の目標は、そのような依存関係が存在する場合にビルドを失敗させることです。Java 8
ビルド時に新しいクラス/メソッドへの依存関係を検出する方法はありますか?
2つの可能なオプションについて考えましたが、どちらも実行可能かどうかはわかりません:
- 定義済みのクラスとメソッドに対する依存関係を検出するためのある種のバイトコード アナライザー。そのようなツール/maven プラグインはありますか?
- リント (
lint4j
) ルール。を使用してクラス/メソッドへの依存関係を検出できるかどうかわからないlint