2016-09-22 17 views
0

Mavenを使用し、同じ会社/チームまたは同じ人でも開発されたdependenciesのプロジェクトがあるとしましょう。一部のデベロッパーがcompileプロジェクトに参加したい場合、specified dependenciesはレポからフェッチされ、まだ存在しない場合はローカルにダウンロードされることは明らかです。内部依存関係のMavenバージョン管理

今度は、次のシナリオを想定してみましょう:

開発者は、依存関係についてを気にしないと

  1. 依存関係のバージョンはx.x.x.SNAPSHOT =>maven最新バージョンを取得しますです24時間ごとにRepoの(デフォルト)。 問題:このバージョンがあなたのプロジェクトと互換性がない場合、基本的に、プロジェクトで何も変更しなかったために何が起こったのか分かりません。唯一可能なソリューションは、依存関係をローカルでコンパイルして管理することです。

  2. 依存関係のバージョンは "x.x.x.y" => mavenはこのバージョンとまったく同じものをフェッチします。ですから、この依存関係を更新するにはバージョンを変更する必要があります。 問題:この依存関係に変更が加えられ、コードがサーバーにプッシュされるたびに、のバージョンを変更する必要があると思われます。しかし、これはばかげて聞こえる。

解決策:

この場合の唯一の可能な解決策は、(レポからソースを取得し、ローカルでコンパイル)手動internal dependenciesを処理するためにあるようです。しかし、これらの2つの問題は、私を悩ませています

  1. このソリューションは、すべての依存関係を取得する必要がありmavenの全体的なアイデアを破ります。
  2. このソリューションは、プロジェクトで開発を始めたいだけの開発者にとっては困難ですが、依存関係は気にしません(依存関係は作業中のプロジェクト部分では使用されないためです)。

もっと良い解決法はありますか?

+3

開発者が自分の仕事を真剣に受け止めていないよりも、依存関係を気にしないならば...さらにSNAPSHOTはあなたが開発者の下にいるということを意味します...互換性はmajor.minor.patch verisonによって表現されます..あなたがバージョンコントロールに書かれているよりも新しいリリースを持っている場合、依存関係を更新する必要があるということが起こります。 – khmarbaise

+0

これは、私たちがいつも手作業でローカルにコンパイルしているなら、mavenを使用する必要はないということですか? – Rufi

+0

これはあまりにも多すぎて私が気にしていなかったことですが、開発者は依存関係に興味がありませんが、最新の作業バージョンがほしいと思っていますが、この依存関係は開発プロセスにあります。 – Rufi

答えて

0

最新の安定した依存関係を管理するには、自分の管理しているWebリポジトリでMavenを動作させることもできます。だからあなたは、すべての乗組員が必要なバージョンのプラグイン、フレームワークなどを持っていることを確認します。私たちのチームは作業用ビルを構築するためにTeamCityサーバーを使用しています.M2/settings.xmlはTCサーバーリポジトリと連携するように構成されています。チームリーダーはすべてのバージョンを管理しています。

関連する問題