2011-05-25 13 views
1

私はすぐに大規模なプロジェクトの一部としてJavaアプリケーションの束をコーディングするチームと一緒に作業しています。ソースコードにはSVNを使用する予定ですが、SVNを使用していない多くのチームに依存しています。彼らは基本的に私たちのアプリで利用する多数のライブラリ(.jar形式)をコーディングしています。SVNでの依存関係の処理

誰もがSVNにいたが、近い将来可能ではないと思われる場合は、svn:externalsを使用することができると私は理解しています。今のところ、週1回程度更新された.jarファイルを入手するだけです。

私はまだ比較的新しいSVNですが、これを処理する適切な手順は何ですか? .jarをリポジトリにチェックインしていますか?あるいは、SCMのようなバイナリを避けるべきでしょうか?私たちはまたMaven経由の依存関係管理を使ってみました...チーム間でバイナリを共有するのは良い選択だと思われますが、私たちが本当に複雑なものを本当に望むかどうかはわかりません。

+1

現在のビルドソリューションは何ですか? Antベースの場合、Mavenへの移行はかなり苦しいかもしれません。その場合は、依存関係を追跡するためにivyを提案します。 – Olaf

答えて

1

ライブラリ(特にサードパーティと呼んでもいいと思いますが)をSVN(または任意のSCM)にチェックインするのは大したことではなく、そのシンプルさから多くの利益を得ています。 jarファイルやlibsファイルが大きすぎて頻繁に変更される場合は、より複雑になる可能性があります(Maven、Ivyなど)

SVNはバイナリファイルとdiffファイルを処理するのに適しています。

+0

おそらく、ライブラリの最新バージョンをまとめてSVNにダンプするだけですが、単純化された非バージョン番号のファイル名を持つMavenですか? –

+0

ありがとう - これは主に私が不思議に思っていたものです。 libsは小さいので、これはおそらく最も単純なルートです。 – Andrew

0

スペースが(サーバー上の)問題でない場合は、バイナリや依存関係のソースコードをチェックインするのは間違っているとは思いません。誰もが簡単にできるので、人々は簡単にチェックアウトし、問題なく構築できます。

0

バイナリが大きい場合には、私は間違いなくリポジトリにそれらをチェック避けるだろう。私の提案は、パブリック共有に最新バージョンのjarファイルを保存し、その共有ファイルにマウントしてプロジェクトファイルにリンクすることです。これは、マウントされたストアへのパスが同じままである限り、1人だけがすべてのマシンではなくバイナリを更新する必要があることを意味します。

大きすぎない場合は、レポを確認するのは大したことではありません。

6

私は、依存関係管理がmavenまたはivyリポジトリを使用して行うことが最も効果的であることを発見しました。 ArtifactoryとNexusには無料版があります。ビルドスクリプトからそれらを管理することができます。 Antを使用している場合は、IvyMavenまたはGradleです。私はGradleを好む。

+1

バイナリー・リポジトリー・マネージャーが最善の方法です(恥知らずなプラグイン:Artifactoryの+1)。 VCSやネットワーク共有のようなアドホックな依存関係管理方法には、バイナリバージョン管理、細かいセキュリティ、リモートリポジトリのプロキシとキャッシュ、メタデータなど、多くの重要な機能が欠けています。 – noamt

+0

ありがとう - 質問をしてから、実際にMavenを起動して実行することができました。状況を正しく設定するのは難しいことでしたが、正しく機能するときには多くのメリットがあります。私はいくつかのシナリオで遊んで、私のチームにとって最も簡単なものを見なければなりません。 – Andrew

関連する問題