Я хочу сделать что-то подобное в рецепте от шеф-повара:
maven_artifact "/opt/foo/my.jar" do
source "com.foo:my:0.1:jar"
end
Но я не могу найти поваренную книгу, в которой это предусмотрено. Я написал кое-что, что в основном делает это, но не обрабатывает снимки, что требует синтаксического анализа maven-metadata.xml. Прежде чем погрузиться в это, я хотел убедиться, что не упустил что-то очевидное, поскольку это похоже на базовый вариант использования.
На основе кода 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
Если вы используете Artifactory в качестве репозитория Maven, под рукой будет более элегантное решение.
Начиная с версии 2.6.0 запрос на неуникальный артефакт может вернуть последний доступный снимок.
Чтобы использовать эту функцию, сначала убедитесь, что целевой репозиторий определен с уникальный политика моментальных снимков, затем запросите желаемый артефакт, используя неуникальную версию моментального снимка, например:
org / artifact / 1.0-SNAPSHOT / artifact-1.0-SNAPSHOT.jar
И последний уникальный снимок артефакт с базовой редакцией 1.0 будет возвращен.