0

大規模なスタンドアロン (Java EE ではない) の商用 Java プロジェクト (10,000 以上のクラス、4 ~ 5 の SVN リポジトリ、10 ~ 20 のサードパーティ ライブラリ) があり、Maven に切り替え中です。残念ながら、Maven の経験があるエンジニアは 1 人だけです (3 か国に分散した 12 人ほどのチームの中で)。

古い Ant のやり方では、次のことを行います。

  1. 3 つまたは 4 つのリポジトリからソース コードをチェックアウトする
  2. すべてを単一のモノリシック JAR にコンパイルする
  3. そのリリース (ライブラリ JAR、インストーラー、さまざまな構成ファイルなどを含む ZIP ファイルの一部として)
  4. JAR を SVN にチェックインして、顧客が実際に得たものを記録しました。

これで、アーティファクトでいっぱいの Maven リポジトリと、Maven がそのリポジトリにアクセスできることに依存するビルド プロセスができました。したがって、実際に顧客に出荷したものを複製する必要がある場合は、すべての適切なバージョンがすべて含まれている Maven リポジトリに対してビルドを行う必要があります。(SVN で管理されている) POM ファイル (の一部のバージョン) で、すべての依存関係をリリースされたバージョンに設定した場合、これは実行可能だと思いますか?

しかし、私たちのリリース エンジニアは気味が悪いようです。

  1. 誰かが誤って WebDAV サーバー上の foo-api-1.2.3.jar のコピーを破壊しないようにするため (WebDAV サーバーにはアクセス制御がありますが、バグのあるビルド スクリプトは停止しません)
  2. 彼らがしたかどうかを検出する
  3. その後回復する

彼のアイデアは、リリース ビルドの場合、WebDAV サーバーではなくローカル ファイル システムをリポジトリとして使用し、そのローカル リポジトリを SVN の管理下に置くことです。

私たちの Maven 経験のあるエンジニアはそれが好きではありません - 彼はバイナリをバージョン管理下に置くのが好きではないのでしょうか? -- また、Nexus サーバーのプロフェッショナル バージョンがクロバリングまたはクロバ追跡/回復の問題を解決できる可能性があることを示唆しています。

個人的には (Sonatype の読者の皆さん、申し訳ありませんが)、無料バージョンからまだ何の利益も得られていないのに、無料ではないビルド システムに大金をつぎ込むことに満足しておらず、それが実際に問題を解決するという保証もありません。

したがって、私たちの選択は次のようになります。

  1. WebDAV サーバー
    • 長所:開発者もアクセスできるサーバーは1つだけです...?
    • 短所: 簡単な破壊、破壊追跡/回復なし
  2. ローカル ファイル システム
    • 長所: リビジョン管理下に置くことができます
    • 短所:配布スクリプトでのみ機能します

率直に言って、これらは両方ともハックのように思えます。これを行うためのより良い方法がないかどうか疑問に思う必要があります。

だから:ここでやるべきことはありますか?

4

2 に答える 2

1

すべてを入手できるかどうかはわかりませんが、次のようにします。

生成されたアーティファクトをバージョン管理下に置く必要はありません(pomsがバージョン管理下にある場合)。WebDAVの代わりにローカルファイルシステムを使用する利点がわかりません(これはセキュリティを強化するものではなく、WebDAVも保護できます)。Nexusの商用バージョンがここで何を解決するかわかりません。

于 2009-11-24T11:08:17.643 に答える
0

Nexus には、リリース リポジトリで既にリリースされているアーティファクトを上書きできないようにする設定があります。

約 10 人のチームの場合、Nexus の無料バージョンで十分です。

于 2011-01-25T06:10:41.770 に答える