2009-04-18 9 views
5

のは、私は次のものが含まivy.xml持っているとしましょう:孤立した成果物を削除するためにApache Ivyを設定するにはどうすればよいですか?

<dependency org="checkstyle" name="checkstyle" rev="4.3" /> 

をそして私はCheckstyleは4.4にアップグレードしたいが、私は含まれて私のivy.xmlを変更:

<dependency org="checkstyle" name="checkstyle" rev="4.4" /> 

を持つretrieveた後、最初の設定では、私はファイルcheckstyle-4.3.jarを持っています。 2番目の設定の後、私もファイルcheckstyle-4.4.jarを持っていて、ファイルcheckstyle-4.3.jarはまだ存在しています。

古いファイルが孤児であることをIvyに認識させ、libディレクトリから削除する方法はありますか?このアイデアは、ツールをアップグレードするたびに開発者のディスク使用量が大幅に増加しないようにすることです。

理想的には、ローカルリポジトリからも削除することをお勧めします。私はローカルリポジトリの目的はプロジェクト間で共有されていることを認識しているため、アーティファクトが他のプロジェクトでまだ使用されているかどうかわからないため、何も削除しても意味がありません。しかし、何らかのプルーン手順が必要です...

答えて

9

私はIvy 2.0.0を使用していますので、使用しているバージョンに該当するかどうかはわかりません。

Ivy retrieveタスクにはsync属性があります。これをtrueに設定すると、検索されたディレクトリ(あなたの場合はlib)の未使用/未知のファイルが削除されます。これは、がこのディレクトリに手動でコピーされた成果物を意味することに注意してください。具体的には解決されないIvyは削除されます。

また、syncオプションを使用しても、Ivyが依存性を解決しない場合(空または存在しない場合はivy.xmlなど)、retrieveディレクトリは削除されます。

+0

これはまさに私が探していたものです。ありがとう!ちなみに、私は2.1.0-RC1を使用しています。 –

+0

ところで、私はこれがキャッシュからアイテムを削除しないと判断しました。したがって、libディレクトリに同じjarの複数のバージョンを持たない(重要です)が、ディスク容量をあまり節約できないという利点があります。偶発的なアイビー:クリーンキャッチがその仕事をします。 –

関連する問題