Maven/Artifactory がタイムスタンプ付きのスナップショットを保持しないようにする方法
-
12-09-2019 - |
質問
ディスク容量を考慮して、リポジトリにはスナップショットの 1 つのバージョンのみを保持したいと考えています。タイムスタンプ接尾辞を付けて複数のバージョンを保持するのではなく
例えばecommerce-2.3-20090806.145007-1.ear
これを設定するにはどうすればよいですか?これはビルド設定ですか、それともリポジトリ (Artifactory) 設定ですか
ありがとう!
解決
最も単純な(そして 推奨) 方法は、一意でないスナップショットを使用することです。一意のスナップショットを使用する必要がある場合は、artifactory.config.xml の <localRepository> 定義で <maxUniqueSnapshots> プロパティを指定することで、Artifactory でこれを行うことができます。
例えば:
<localRepository>
<key>snapshots</key>
<blackedOut>false</blackedOut>
<handleReleases>false</handleReleases>
<handleSnapshots>true</handleSnapshots>
<maxUniqueSnapshots>1</maxUniqueSnapshots>
<includesPattern>**/*</includesPattern>
<snapshotVersionBehavior>non-unique</snapshotVersionBehavior>
</localRepository>
参考までに、これを行うことができます ネクサス (UI 経由で) 定期サービス, を使用すると、保持する最小数、保持する最大期間、およびリリース バージョンがデプロイされている場合にスナップショットを削除するかどうかを指定できます。
他のヒント
この機能/機能がMAVEN 3.0で削除されたことを注
ただ、自分の質問に何かを追加します:
の追加
<distributionManagement>
...
<snapshotRepository>
...
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
...
</distributionManagement>
私の親にのポンポンのも、この溶液に貢献しました。
を参照してください:
http://i-proving.com/space / Jessamyn +スミス/ブログ/ 2008-06-16_1する
Artifactoryでリポジトリに固有の設定を変更する - 管理者としてログイン - と関連レポ上で編集を選択 - ここにスクリーンショットます:
Artifactory は古い固有のスナップショットをクリーンアップできます。ただし、固有のスナップショットは、依存関係を追跡したり、特定のバージョンにロールバックしたりする目的には役に立たないことがわかりました。これを行うには、よりクリーンで信頼性の高い、より良い代替手段があります。そのため、Artifactory はデフォルトで非一意のスナップショットを優先するように設定されており、このポリシーは次のようにすることができます。 中心的に 制御されます (これは Artifactory に固有のものです)。これと自動クリーンアップ機能について詳しくは、こちらをご覧ください。 ここ.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>remove-old-artifacts</id>
<phase>package</phase>
<goals>
<goal>remove-project-artifact</goal>
</goals>
<configuration>
<removeAll>true</removeAll><!-- When true, remove all built artifacts including all versions. When false, remove all built artifacts of this project version -->
</configuration>
</execution>
</executions>
</plugin>
非ユニークなスナップショットを使用して行くには良い方法ではありません。代わりにスナップショットをクリーンアップし、ディスク容量を抑えるためにそれを設定することができ、リポジトリマネージャを取得。あなたは簡単に実際に使用されているバージョンを確認することができますので、タイムスタンプスナップショットを持つことは、問題を追跡することが非常に容易になります。
それは
の下のApacheで引用されたようにMaven 3で動作しません。It's not recommended to use non-unique snapshots since they lead to non-reproducible builds. The main use case for these was to save disk space in the repository, but this is best handled by scheduling a periodic snapshot removal task to keep the number of versions down