2016-11-22 7 views
0

私はコマンドを使用して、私のMavenプロジェクトバージョンのMavenプラグインプラグインで実行すると:バージョンMavenのプラグイン:バージョン後に発見されていないパッケージ:使用-最新バージョン

mvn versions:use-latest-versions

のpom.xmlがあります更新された依存関係で更新されます。

問題は、コンパイラはパッケージがを見つけていないと言うので、以前のバージョンで使用されたパッケージの一部が含まれていないので、いくつかのライブラリが新しいとしてバージョンに更新されているということです。誰も自動的に回避する方法を知っていますか?つまり、自分のコードで使用しているパッケージとクラスを持つ最新バージョンに更新します。

+0

あなたのユースケースを理解しているかどうかわかりません。依存関係としてリストされているパッケージXがあるとします。 XはYに依存し、Yも使用しますが、依存関係として明示的にリストしません。今、あなたはバージョンプラグインのアップデートを持っていて、YはもはやXの依存関係にはなりませんが、あなたはまだあなたのコードでそれを使用していますか? – Matthias

+0

私は前提をしていますが、プラグインの目的は、依存関係をアップグレードした後もコードがコンパイルされているかどうかを確認することではないと思います。実際には、非難されたメソッドなどを参照しているソースコードがエラーに繋がる可能性があるので、これは非常に危険です。 それ以上のこともあります:**ライセンスについて**あなたは考えましたか? とにかく、ここで見て、あなたのコンテキストに良い答えがあります: [ここ](http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-最新バージョンの依存関係) – MadJlzz

答えて

2

私の意見では、どのバージョンの更新が「保存」であるかを判断する簡単な方法はありません。

コンパイルするすべてのクラスがまだ存在することを確認しても、メソッドのシグネチャが変更されている可能性があります。また、すべてのメソッドシグネチャが同じであっても、動作が変更されてランタイム例外などが発生する可能性があります。

バージョンのアップデートを確認するには、コンパイルを実行してすべてのテストケースを実行するしかありません。可能なバージョンの更新のすべての組み合わせに対してこれを行うことは可能ですが、それには多くの時間がかかります。

+0

すべての応答が良いです、私はあなたに最初の回答であることの受け入れを与えます –

2

プラグインはコードを分析してそれに応じて依存バージョンを調整しません。

ゴールuse-latest-versionsの目的は、プロジェクトをプロジェクトの最新のリリースにアップグレードすることです。プロジェクトの依存関係のため、コンパイルと展開の問題が発生する可能性があります。 問題を特定したら、プロジェクト全体が依存関係の最新リリースにアップグレードされるようにすべての問題を修正する必要があります。

2

問題はいくつかのライブラリが として新しいとバージョンに更新されていることであるコンパイラはパッケージが見つからないと言うので インクルードは、以前のバージョンで使用されたパッケージの一部が含まれていません。誰でも自動的に を回避する方法を知っていますか?つまり、自分のコードで使用している パッケージとクラスを持つ最新バージョンに更新します。

もちろん、それはできません。

依存関係を更新することは、偶然のゲームではありません。
依存関係の最終バージョンが必要な場合は、必要に応じてこのバージョンが壊れているか、コードが壊れていないか心配する必要はありません。
ライブラリを更新するには、そのバージョンを更新する必要があるためです。依存関係を更新する必要がない場合は、依存関係を更新しないでください。必要がある場合は、必要に応じてコードを更新するようにしてください。

関連する問題