回答:
Apache Buildrコードに基づく:http ://svn.apache.org/repos/asf/buildr/trunk/lib/buildr/packaging/artifact.rb
あなたはこのようなことをすることができます:
def snapshot?
version =~ /-SNAPSHOT$/
end
if snapshot?
metadata_path = "#{group_path}/#{id}/#{version}/maven-metadata.xml"
metadata_xml = StringIO.new
URI.download repo_url + metadata_path, metadata_xml
metadata = REXML::Document.new(metadata_xml.string).root
timestamp = REXML::XPath.first(metadata, '//timestamp')
build_number = REXML::XPath.first(metadata, '//buildNumber')
snapshot_of = version[0, version.size - 9]
classifier_snippet = (classifier != nil) ? "-#{classifier}" : ""
repo_url + "#{group_path}/#{id}/#{version}/#{id}-#{snapshot_of}-#{timestamp.text}-#{build_number.text}#{classifier_snippet}.#{type}"
end
MavenリポジトリとしてArtifactoryを使用する場合、よりエレガントなソリューションが手近にあります。
バージョン2.6.0以降、一意でないアーティファクトをリクエストすると、利用可能な最新のスナップショットを返すことができます。
この機能を利用するには、まずターゲットリポジトリが一意の スナップショットポリシーで定義されていることを確認してから、次のような一意でないスナップショットバージョンを使用して目的のアーティファクトをリクエストします。
org / artifact / 1.0-SNAPSHOT / artifact-1.0-SNAPSHOT.jar
また、ベースリビジョンが1.0のアーティファクトの最新の一意のスナップショットが返されます。