Як я можу завантажити артефакти Maven у шеф-кухаря?


9

Я хочу зробити щось подібне в кухарському рецепті:

maven_artifact "/opt/foo/my.jar" do
  source "com.foo:my:0.1:jar"
end

Але я не можу знайти кулінарну книгу, яка б це забезпечувала. Я написав щось, що в основному робить це, але воно не обробляє знімки, для чого потрібен аналіз maven-metadata.xml. Перш ніж зануритися в це, я хотів бути впевненим, що я не пропустив чогось очевидного, оскільки це здається базовим випадком використання.


Ви можете просто скористатися кулінарною книгою Maven
Cherry

Відповіді:


4

На основі коду 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


3

Якщо ви використовуєте Artifactory як своє сховище Maven, підходить більш елегантне рішення.

Починаючи з версії 2.6.0, запит на унікальний артефакт може повернути останні наявні знімки .

Щоб скористатися цією функцією, спочатку переконайтеся, що цільове сховище визначено унікальною політикою знімків , а потім запросіть потрібний артефакт, використовуючи унікальну версію знімка, таку як:

org / артефакт / 1.0-SNAPSHOT / artifact-1.0-SNAPSHOT.jar

І буде повернено останній унікальний знімок артефакту з переглядом бази 1,0 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.