2017-01-12 18 views
1

Mavenでは、SNAPSHOTとRELEASEアーティファクトの異なるローカルリポジトリを設定することは可能ですか?SNAPSHOTとRELEASEアーティファクトのMaven別のローカルリポジトリ

私が求めている理由は、プロジェクトのために継続的にJenkinsを使用しているからです。整合性を確保するために(競合状態のために異なるJenkinsのジョブから同じアーティファクトが構築されている場合は、カオス的な動作が発生する可能性があります)、Jenkinsの新しいローカルリポジトリを作成します。

私たちのプロジェクトは巨大なので、すべてのビルドでNexusからたくさんの依存関係をダウンロードする必要がありますが、それについて考えると、RELEASE成果物を毎回ダウンロードする理由はありません。 RELEASE成果物はビルドごとに変更されません。たとえば、Spring 4.5、httpclient 4.0、aspectj 1.8.1はビルドごとに同じです。

実際に一貫性を確保するために、リポジトリにSNAPSHOT依存関係を持たないようにしてください。 RELEASEアーティファクト用のローカルリポジトリとSNAPSHOT用のローカルリポジトリをそれぞれ2つずつ作成することができれば、SNAPSHOTリポジトリを削除してローカルRELEASEリポジトリを再利用することができ、Nexusからダウンロードできます。

リモートリポジトリのRELEASE、SNAPSHOT設定を行うことができますが、ローカルリポジトリと同じ種類の設定を行うことは可能ですか?

これができない場合は、この問題をどのように解決しますか。

+0

スナップショットとリリースに別々のリポジトリを使用する必要があります.pom configはここで説明しています。http://stackoverflow.com/questions/14211697/how-to-configure-maven-project-to-deploy-both-snapshot-and -releases-to-nexus –

+0

この記事で説明しているのはリモートリポジトリです(Nexusへのデプロイよりも説明しています)。これは私の望むものではなく、2つのローカルリポジトリを定義する必要があります.1つはSNAPSHOT用、もう1つはリリース用です。これはsettings.xml " c:\ repo"で設定された方法です。私は " c:\ repo_snap"や " c:\ repo_rel"や同様の効果を出す方法を持っています。 – posthumecaver

+0

申し訳ありませんが私は誤解を私は答えを追加しました、あなたはこれを行うべきではありません。 –

答えて

0

あなたのJenkinsにはローカルMavenインストールがあり、これにはローカルリポジトリがあります。これはSNAPSHOTとRELEASEの両方で同じである必要があります。

Nexusから依存関係がダウンロードされると、それはローカルに保存され、もう一度ダウンロードされなくなります。これは実行可能になります。

初めてプロジェクトをビルドするときは、Nexusから大規模なダウンロードが必要です。

+0

すべてのジョブが互いに独立して実行できるように、ジョブ・ワークスペースにMavenキャッシュを保管するためにジェンキンを設定することが重要です。 – khmarbaise

+0

すべてのジョブは、GAVによって固有の依存関係を持ちます。彼らは非常に迅速にアクセスする地元のレポになります。ローカルリポジトリは事実上すべてのジョブのキャッシュです。過去に問題が発生したため、Jenkinsは常に各ビルドのワークスペースをきれいにするように設定します。 –

+0

ジョブよりもすべてのジョブにキャッシュを使用している場合、並行処理の問題が発生する可能性があります。そのため、Mavenキャッシュは並行ジョブによって並列にアクセスされるようには設計されていません。あなたが 'mvn install' /' mvn deploy'をしたら...特に問題は 'mvn clean'(古いプラグインを使うなどと仮定して)に基づいているかどうかという疑問があります。あなたのビルドであなたのビルドは自己完結型ではなく、他のノードなどで動くことができないので、あなたはあなたのマスターに縛られています – khmarbaise

関連する問題