4

インターネット上のパブリック リポジトリ (Maven Central など) からアーティファクトがダウンロードされたときに、アーティファクトのコピーを Nexus (または Artifactory、まだ決定していません) に保存したいと考えています。

基本的に、あなたのローカルリポジトリにjarがなく、リポジトリマネージャーも持っていない場合は、リポジトリマネージャーにjarを依頼して、私に送ってもらい、両方をリポジトリに保存したいと思います。マネージャーと私のローカルレポにあります。次に、別の人がリポジトリ マネージャーに同じ jar を要求すると、リポジトリ マネージャーからそれが送信され、ローカル リポジトリに保存されます。Maven セントラルにアクセスする必要はありません。

これは、箱から出してすぐに動作するように思えますが、わかりません。リポジトリ マネージャーを介して Maven セントラルのアーティファクトを確認できますが、Netbeans を使用してプロジェクトに依存関係を追加すると、(明らかに) Maven セントラルから直接ダウンロードされます。レポマネージャーには何もキャッシュされません(私が見る限り)。

4

3 に答える 3

5

Nexusには、あなたが説明したことをほぼ正確に実行するプロキシリポジトリの概念があります。詳細については、本の「パブリックリポジトリのプロキシ」セクションを参照してください。

Artifactoryには、仮想リポジトリと呼ばれる同様の機能があります。

リモートのパブリックリポジトリをプロキシしてキャッシュすると、パブリックインターネットを介した冗長なダウンロードを減らすことで、ビルドを高速化できます。組織の開発者がSpringFrameworkのバージョン2.5をダウンロードする必要があり、Nexusを使用している場合、依存関係(および依存関係の依存関係)をリモートリポジトリからダウンロードする必要があるのは1回だけです。インターネットへの高速接続では、これはささいな懸念のように思えるかもしれませんが、開発者に数百メガバイトのサードパーティの依存関係をダウンロードするように常に要求している場合、実際のコスト削減はMavenが依存関係の新しいバージョンを確認し、パブリックインターネットを介して依存関係をダウンロードします。

リポジトリマネージャーをセントラルのミラーとして設定することで、Mavenインストールがセントラルに接続しようとするのを防ぐことができます。セントラルへのリクエストはリポジトリマネージャーに送信されます。たとえば<mirrors>、Mavenのsettings.xmlのセクションに以下を追加して、リクエストを中央のリポジトリマネージャーにリダイレクトします。

<mirror>
  <id>central-proxy</id>
  <mirrorOf>central</mirrorOf>
  <url>http://myrepo/nexus/content/groups/public</url>
</mirror>

私は、いくつかのリモートリポジトリを含むリポジトリグループを設定する傾向があります。このグループは、Mavenのインストールに関する限り、単一のリポジトリとして機能しますが、複数のリモートリポジトリからのアーティファクトを照合します。

于 2009-09-25T16:00:24.763 に答える
2

他のパブリック リポジトリからのアーティファクトのプロキシとキャッシュは、適切なエンタープライズ リポジトリ マネージャーに実際に組み込まれています (または組み込まれている必要があります)。企業環境では、開発チームは、パブリック リポジトリがダウンしている場合でも、ソフトウェアを開発および構築できる必要があります。これは非常に基本的な使用例であり、企業リポジトリを使用する理由の 1 つです (管理していない公開リソースに依存しないため)。

リポジトリ マネージャーをインストールして構成したら、パブリック リポジトリではなくリポジトリをチェックするように Maven を構成する必要があります。これを行うには、~/.m2/settings.xml. セクション3.2を参照してください。詳細については、Nexus Bookの単一の Nexus グループを使用するように Maven を構成するを参照してください (構成はすべてのリポジトリ マネージャーに適用されます)。

企業環境では、すべてのリポジトリ要求をミラーリングすることで、 Maven に単一のリポジトリを使用させることを好みます。これを実現するには、 に設定します。mirrorOf*

<settings>
  ...
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>Maven Repository Manager running on repo.mycompany.com</name>
      <url>http://repo.mycompany.com/proxy</url>
    </mirror>
  </mirrors>
  ...
</settings>
于 2009-09-25T16:58:28.687 に答える
1

Artifactory では、[ホーム] -> [Maven 設定] ページを使用して、選択した Artifactory 仮想リポジトリのみを使用するように Maven を強制する Maven 設定をダウンロードできます。これを仮想リポジトリのリポジトリ参照のクリーンアップと組み合わせると、Maven Central にクエリを実行することがなくなります。

NetBeans に関する問題は、Maven インストールで repo 宣言を強制することによって解決される場合があります。前回 NetBeans Maven サポートを使用したとき、すべてのケースに対応するためにプロジェクト レベルの settings.xml ファイルも指定しました。

補足: mirrorOf 機能の使用は非常に失礼であり、奇妙な動作につながる可能性があります。

于 2011-03-03T16:07:08.817 に答える