2012-03-15 14 views
13

私たちはすべての内部プロジェクト(外部のリポジトリをミラーリングするだけでなく)を扱うNexusローカルリポジトリマネージャを持っています。私たちの内部プロジェクトでは、最新のバージョンのスナップショットビルドのみを保持します。たとえば、ProjectX 1.0,1.1、および1.2-SNAPSHOTがあった場合、1.2がリリースされると1.2-SNAPSHOTが削除され、1.0,1.1,1.2,1.3-SNAPSHOTがNexusリポジトリにあります。ローカルリポジトリの古いスナップショットを処理する最も良い方法は?

私たちのJenkinsサーバーは、ローカルの.m2/repositoryフォルダにあるすべてのOLDスナップショットを持ち、実際には失敗するはずのこれらの古いスナップショットに対してプロジェクトを正常に構築しています。 POMファイル)

Nexusリポジトリに存在しないこれらの不要なスナップショットを削除するには、Mavenを(settings.xmlまたはpom.xmlで)設定できますか?

もしそうでない場合、それらを取り除く最善の方法は何ですか?ジェンキンスの設定、cronジョブ、他のオプション?

ありがとう...

+0

関連する質問:_developers_が、ローカルの.m2 \ repositoryフォルダにある古いタイムスタンプ付き成果物をどのように取り除かなければならないかについて、http://stackoverflow.com/q/4275466/223837 –

答えて

0

ここで同様の設定を使用します。アーティファクトが解放されると(一部のリポジトリの場合)、ネクサスは自動的にスナップショットを削除します。それから、継続的なサーバーでは、一日一回ローカルリポジトリフォルダを削除するcronジョブがあります。これは私たちのためにうまくいく。

+0

これは、問題を処理する最も無痛で効果的な方法のように見えます。ありがとう! – user1071914

-3

jenkinsサーバーでmavenを使用すると、設定に問題が生じる可能性があります。

Mavenは、定期的に<snapshots>ため<repository>セクションで<updatePolicy>の値を設定することにより更新スナップショットを探すことconfiguredする必要がありますすることができます。

​​

選択肢がある:alwaysdaily(デフォルト)、interval:X(Xは分単位の整数)又はnever

また、バージョンが1.1-SNAPSHOTから1.2-SNAPSHOTに変更された場合、ジェンキンがどのように古い(1.1-SNAPSHOTバージョンで正常にビルドされるかは不明です。

+1

私は実際に逆の質問をしていました:ローカルリポジトリのスナップショットを自動的に取得し、更新しないでください。しかし、ありがとう。 – user1071914

0

最初にジェンキンを使用してクリーンビルドを行うベストプラクティスを構築している場合は、ビルドごとにローカルリポジトリを使用することを意味し、サーバーのグローバルではありません。さらに、pomにSNAPSHOTが含まれているかどうかを自動的にチェックするアーティファクトを解放するためにリリースプラグインを使用しないと聞こえます。さらに、maven-dependency-pluginを介してローカルリポジトリをクリーンアップすることも可能です。私の経験に基づいて、私は単純に月よりも古いSNAPSHOTを削除するタスクを設定しました...

0

を試して、あなたは、このコマンドを使用することができます。

find $HOME/.m2/repository/ \ 
    -name "*-SNAPSHOT" \ 
    -type d \ 
    -mtime +60 \ 
    -print \ 
    -prune \ 
    -exec rm -r "{}" \; 

は説明:

  • フォルダ$HOME/.m2/repository/
  • *-SNAPSHOTとITという名前のものを探しますディレクトリである必要があります
  • 最後の60日間に修正されていないはずです
  • あなたが見つけたものを印刷してください。コマンドをテストする場合は、ここで停止します
  • は、フォルダを削除します。-pruneは、後でフォルダを入力しようとしません。
  • -execは、内部のフォルダとファイルを削除します。
関連する問題