2010-11-22 19 views
9

最近、ローカルリポジトリ(.m2 /リポジトリ)に直接mavenアーティファクトをダウンロードしました。 Nexus Repository Managerがインストールされていて、すべての成果物を再度ダウンロードすることなくストレージを満たす必要があります。 Nexusリポジトリをローカルのものに更新する方法はありますか? 公開サーバ(中央、コードハウスなど)とローカルリポジトリ構造に関するNexusの別々の成果物がないため、単純にコピーしたくありません。Nexusリポジトリをローカルアーティファクトで更新する

更新: 一方、ローカルリポジトリからNexusストレージ(パブリックリポジトリ)にアーティファクトをコピーしました。 Nexus webappからアーティファクトを参照することはできますが、MavenはNexusのアーティファクトをどうにか解決できません。 特に登録が必要ですか?公開リポジトリのインデックスを再作成し、Nexusを何度も再起動しました。変更はありません。 ホストされたリポジトリ(本当にMavenの成果物を保管しているもの)、(アーティファクトが要求されたとき、他のリモートリポジトリへのトラフィックをリダイレクト)プロキシリポジトリ仮想リポジトリ(単なる:

答えて

13

ネクサスは、複数のリポジトリの種類を持っています[この質問の範囲外の] maven1リポジトリのアダプタ)。 リポジトリグループを作成して、その集合体からアーティファクトを処理することもできます(publicリポジトリの1つです)。また

、ネクサスはスナップショットリリースにその公開ポリシーに従ってそれらのリポジトリを分割します。前者はスナップショット成果物のみを格納します。後者は理論上はスナップショットとリリースの両方を保存できますが、リポジトリが非常に大きく、スナップショットが含まれていると、実際にはバグが発生します。あなたがする必要がある、あなたのアーティファクトをホストするために

まず:2にローカルリポジトリを分割:スナップショットを含むもの、およびリリースを含む別のものを。あなたのレポは非常に大きい場合はネクサスリポジトリconvertionツールがお手伝いします:

<dependency> 
     <groupId>org.sonatype.nexus.tools</groupId> 
     <artifactId>nexus-repository-conversion-tool</artifactId> 
     <version>1.8.0.1</version> 
     <classifier>cli</classifier> 
    </dependency> 

一度Sourceがネクサスに移動するローカルリポジトリを含むディレクトリで、Targetは、既存の、空であるところあなただけjava -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTargetを実行することができdownlaoded変換ツールが分割されたリポジトリを離れる書き込み可能なディレクトリです。ソースディレクトリがrepositoryで、ターゲットがtempの場合は、temp/repository-snapshotstemp/repository-releasesというディレクトリが作成されます。

第2の:あなたの分割レポをネクサスに移動します。 ${NEXUS_HOME}/sonatype-work/nexus/storageに置くか、リポジトリを格納するようにnexusのインストールが設定されている場所に置いてください。

サード:あなたは第二段階に移動レポと同じIDを持つ2つのホストされたリポジトリを作成します。 (例ではrepository-snapshotsrepository-releases

あなたのレポにはリリースのみが含まれていれば、あなたのソリューションはうまくいっているかもしれませんが、別の間違いを犯したでしょう。ネクサスはすべてのリポジトリの成果物を保存しますが、リポジトリをホストしていないリポジトリの格納はキャッシング目的にすぎません(publicリポジトリの場合のように)、コンテンツをホストされたリポジトリにコピーして作業する必要があります。

+0

また、リポジトリでホストしているアーティファクトの種類も考慮する必要があります。 Nexusはリポジトリをスパンショットに分割し、スナップショット成果物やリリース+スナップショットをホストするかどうかに応じて解放します。それはシュートだけど – Miguel

+0

ああ、あなたの答えは遅すぎる。あなたのアプローチは私に多くの時間を節約してくれたと思います。また、スナップショットを分離してアーティファクトをリリースし、手動で対応するNexusリポジトリに移動しました。私は何とかcliを使って各リリースのアーティファクトを展開しなければなりませんでした。スナップショットでは、Nexusキャッシュを再インデックスするだけで十分でした。ありがとう! – mamuesstack

関連する問題