1

私はmavenが初めてです。

特定のエンタープライズ レベルの Java アプリケーション。ソースコードはSubversionで管理しています。

コードをフリーズすると、5年後にコンパイルして同じ結果を受け取ることができるはずですが、mavenが100%の精度で処理できるかどうか少し心配です:

  1. Maven がインターネットにアクセスすると、jar が破損する可能性はありますか (ネットワークの問題やミラーの jar が正しくないなど)。
  2. 5 年後にコードを再コンパイルしたいとします。必要なjarが存在しない可能性はありますか?
  3. エンタープライズ アプリケーションがこのような「不透明な」外部ソース (インターネット ミラーなど) に依存するのは危険ではありませんか。

前の場所の反対側から、その svn:external を利用しました。svn には、すべての 3rd 製品 (jar) 用の特別なディレクトリ (vendor ブランチ) があります。各製品とその特定のバージョンには、専用のディレクトリがあります。アプリケーション コードはsvn externalを使用して、具体的な jar をベンダー ブランチから取得します。

この構成では、ソース管理下にあるすべての jar を把握しており、5 年後にアプリケーションを再構築して、5 年前と同じ jar でパックすることができます。

私は何かが恋しいですか?

4

1 に答える 1

2

はい、それは危険ですが、その問題に取り組む方法があります。

  1. これは発生する可能性があり、実際にはかなり頻繁に発生します。ただし、破損したダウンロードを修復するには、ローカル ファイル システムからパッケージを削除し、Maven を実行して再ダウンロードするだけです。ミラー内のパッケージは、そこにあると簡単に破損するとは思いません。
  2. メンテナーによる公式の言葉はわかりませんが、ライブラリが「常にそこにある」ことを誰かが保証したとしても、ハードウェアの障害が発生したり、会社が売却されたり、プロセスが変更されたりする可能性があります。あなた自身以外では、あなたは確信が持てません。
  3. はい、そうです。

この問題を本当に解決するには、NexusまたはArchivaを使用して独自のリポジトリをセットアップできます ( SO: Maven 2 に最適なエンタープライズ リポジトリ ツールも参照してください)。独自のインデックスを稼働させている場合は、今後何年にもわたって依存ライブラリを保護することを完全に制御できます。もちろん、それでも壊れる可能性があります:)

あなたが中小企業を経営している場合、プロセスを変更して独自のミラーを確立することにメリットはないと思います (付加価値は何ですか?)。それほど洗練されたsvn:externalsアプローチではないかもしれませんが、個人的には悪くないと思います。

また、Maven は依存関係の管理以上のものであると付け加えるかもしれません。Maven にプロジェクトをより細かく制御できるようにすると相乗効果が高まるため、最終的に Maven に切り替える場合は、Maven の他の機能にも依存することが理にかなっています (ライブラリの更新、ソースの自動ダウンロード、構造規則、プラグイン アーキテクチャ、等。)。

于 2011-05-30T15:14:21.283 に答える