1

私は、プロジェクトの構成済み構成でMaven依存関係がまだ互換性があるかどうかを調べることができるかどうかを判断しようとしています。maven依存関係の互換性を確認する方法

ここに私のテストセットアップです:

3つのプロジェクトがあります。 Child-A,Child-B,Child-C

Child-Aは、互いに互換性がない2つのバージョンで利用できます。 バージョン0.0.1-SNAPSHOTは方法

public void myMethod(String oneParameter) 

バージョン0.0.2-SNAPSHOT変更

public void myMethod(String oneParameter, String secondParameter) 

Child-Bバージョン0.0.1-SNAPSHOTChild-Aへの依存性を持つには、このメソッドを持っており、パラメータを持つメソッドを呼び出します。

public class ChildB { 
    public void callChild(String myParam) { 
     final ChildA test = new ChildA(); 
     String methodParam = String.format("%s is calling %s with Parameter %s ", this.getClass().getName(), 
       test.getClass().getName(), myParam); 
     test.myMethod(methodParam); 
    } 
} 

Child-Cは今、お子様Bとお子様バージョン0.0.2-SNAPSHOTへの依存性に依存しています。このように

Child-C通話Child-B:コンパイラの

public static void main(String[] args) { 
    ChildB inner = new ChildB(); 
    inner.callChild(" Parameter from main method! "); 
} 

これはちょうど良いですが、Child-Aはバージョン0.0.2-SNAPSHOTに存在しているので、ただ一つのパラメータを持つメソッドがないので、ランタイムChild-B中にトラブルに実行されますもう存在しない。

私は、Child-Cがビルドされているとき、その依存関係の署名/互換性が有効なpomの設定であるかどうかをチェックするように、mavenセットアップを設定しようとしています。

私は、Mavenの動物スニファプラグインが解決策になると思っていましたが、内部の依存関係をチェックするセクションが見つかりませんでした。

誰かがこれらの動作を確認する方法を知っていますか?

+0

誰もこの挑戦にどのように進むべきか考えていませんか? – Matze

答えて

0

問題はMavenではありません。実行時に両方のバージョンが存在する場合でも、JVMによってロードされるのは1つだけなので、いずれかのメソッドが欠落しているためにランタイム例外が発生します。

最高の解決策は、バージョン0.0.2に単一パラメータメソッドを追加し、そのバージョンをすべてのポームに指定することです。それが機能しない場合は、2つのパラメータのメソッドだけが呼び出されるようにコードを変更する必要があります。

+0

ありがとうございます。 私は自分のプロジェクトに複数の依存関係があり、その中にはアーティファクトへの依存関係がありますが、バージョンは異なります。したがって、私の依存関係が問題になるかどうかを確認するために互換性をチェックしたかったのです(実行時に!)。 – Matze

関連する問題