2

私はロングショットの達人ではありませんが、助けていただければ幸いです。

状況は次のとおりです。

私は Maven 2 を使用する大規模な分散開発チームで働いています。Nexus リポジトリがありますが、スナップショットではなくリリースのみを保持しています。

問題は 2 つあります。

  1. 毎朝、私が取り組んでいない他のモジュールを svn し、それらをビルドしてから自分のモジュールをビルドする必要があります。これは、私のモジュールがこれらの他のモジュールにスナップショットの依存関係を持っているためです。これには時間がかかり、最新の状態を維持するために誰もがこれを行う必要があるため、実際には合計されます。

  2. モジュール A がモジュール B を必要とし、スナップショットの依存関係として宣言されているとします。モジュール B はより高いバージョン番号に更新されますが、開発者はモジュール A pom を更新するのを忘れます。そのため、モジュール A は古いスナップショットを使用しており、しばらくは識別されない可能性があります。おそらく、リリースを行うときだけです。

では、これらの問題にどのように対処するのが最善でしょうか?

4

3 に答える 3

6

私は Maven 2 を使用する大規模な分散開発チームで働いています。Nexus リポジトリがありますが、スナップショットではなくリリースのみを保持しています。

これが問題です。nexus にスナップショット リポジトリを作成します。リリース リポジトリとスナップショット リポジトリが明確に分離されている限り、スナップショットを nexus にデプロイしない理由はありません (私は通常、Hudson ジョブを使用してデプロイするため、Hudson ジョブが成功するたびに常にリポジトリに最新バージョンが存在します)。 .)

于 2011-02-04T11:13:12.693 に答える
1

特別な (スナップショット) バージョン (質問のポイント 2) に依存したくない場合は、依存宣言でバージョン範囲を使用することを検討する必要があります。

Maven Complete Reference Bookのサンプル:

JUnit バージョン 3.8 以上 4.0 未満

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>[3.8,4.0)</version>
  <scope>test</scope>
</dependency>

注意、maven 2とmaven 3ではSNAPSHOTの扱い(範囲での考慮)が違うと思います。

SNAPSHOTS を NEXUS リポジトリにデプロイしたくない場合 (これが最善の方法です)、既に行っているように自分で SNAPSHOTS をビルドする必要があります。おそらく、スクリプトやjenkinsのような継続的なビルド ツール(ローカル マシンでも使いやすい) が役に立ちます。

于 2011-02-04T12:25:20.280 に答える
0

maven-versions-plugin には、アーティファクトの最新バージョンを使用していないかどうかを確認するために使用できるdisplay-dependency-updates mojo があります。

于 2011-02-04T11:31:13.067 に答える