0

Nexusサーバーがあり、チーム内で共有されているMavenユーザー設定が含まれています

  <mirrors>
      <mirror>
      <!--This sends everything else to /public 
      http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
      -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://192.168.16.232:8081/nexus/content/groups/public</url>
    </mirror>    
  </mirrors>

つまり、pom.xml で定義されたすべてのリポジトリ (デフォルトの Maven Central を含む) が Nexus によって提供されます。

Nexus では、新しいリポジトリが public グループに追加されます。

Nexus 公開グループ

質問: より良い方法はありますか? 現在、他の開発者は Nexus と Maven の相互作用を理解していません。pom.xml で定義された新しいリポジトリ (Nexus によってプロキシされていない) がある場合、maven は単に「アーティファクトを取得できません」と言うだけです。しかし、「Nexusサーバーを構成する」わけではありません:)次に、一部のパブリックリポジトリが他のリポジトリからもキャッシュされていることがわかりました。そのため、最終的に、このjarがどこから来たのか正確にはわかりません。

更新: 私は、最も美しく、シンプルで、説明しやすく、理解しやすいソリューションを探しています。

4

2 に答える 2

1

それは実際、私が仕事をしている場所でそれを達成している正確な方法です。約30の公開リポジトリをミラーリングしており、これが最も簡単な方法です。開発者は全員、ネクサスのインストールをワンストップショッピングとして使用します。追加する必要があるため、パブリックリポジトリに表示されます。これを行うと、世界中のすべてではなく、許可したいものだけが含まれるため、人々が使用しているアーティファクトをより細かく制御できます。

ただし、1つの違いがあります。1つの巨大な公開リポジトリではなく、「リリースのみ」と「スナップショットのみ」のリポジトリがあります。主な理由は、さまざまなキャッシュポリシーを設定できるようにするためですが、組織的にも少し優れています。

セットアップに関して私が抱えている唯一の問題は、ネットワーク(オフィスまたはVPN)に接続していないときにビルドしようとすると、何も機能しないことです。2つのsettings.xmlファイルをローカルに保持し、まれに必要なときに切り替えることで、これを回避します。

于 2013-01-30T15:43:59.690 に答える
1

私の最近の経験から得たいくつかの考えを述べますが、私の感覚では、ビルドとそれに対するさまざまなグループの相互作用に関する一連の明確な要件があることを確認し、ビルド環境の設計を推進する必要があります。それらの実際の要件から。

チップ。

1) ミラーは CI ビルド サーバー以外には配置しません。開発者に、ローカル開発ボックスのどこからでもプルできることを通知しますが、チェックイン時に、CI 参照ネクサスから依存関係が見つからない場合は、あなたと一緒に作業する必要があります。これは彼らに責任を負わせます。

2)それはたくさんのリポジトリです。非常に多くの公開リポジトリを公式に参照しないことを検討します。特にそれらのリポジトリについてはあまり知りませんが、たくさんあります。そして、重複が発生しているようです。ただし、公開グループの構成により、jar の送信元がわかります。その構成内のリポジトリの順序によって、jar がどこから来るかが決まります。そのため、常に最初に見つかった場所からプルします。

于 2013-01-29T16:28:03.997 に答える