Maven eserlerini aşçıda nasıl indirebilirim?


9

Bir şef tarifinde böyle bir şey yapmak istiyorum:

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

Ama bunu sağlayan bir yemek kitabı bulamıyorum. Temelde bunu yapan bir şey yazdım ama maven-metadata.xml ayrıştırma gerektiren anlık görüntüleri işlemez. Buna dalmadan önce, temel bir usecase gibi göründüğü için bariz bir şeyi eksik olmadığımdan emin olmak istedim.


Yanıtlar:


4

Apache Buildr koduna göre: http://svn.apache.org/repos/asf/buildr/trunk/lib/buildr/packaging/artifact.rb

Bunun gibi bir şey yapabilirsiniz:

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

Maven deponuz olarak Artifactory kullanıyorsanız, daha zarif bir çözüm elinizin altında.

2.6.0 sürümünden başlayarak, benzersiz olmayan bir eser isteği, mevcut en son anlık görüntüyü döndürebilir .

Bu özelliği kullanmak için, önce hedef havuzun benzersiz bir anlık görüntü ilkesi ile tanımlandığından emin olun , ardından aşağıdaki gibi benzersiz olmayan bir anlık görüntü sürümünü kullanarak istenen yapıyı isteyin:

org / obje / 1.0-ANLıK / yapay-1.0-SNAPSHOT.jar

Ve 1.0 temel revizyonu ile en son eserin anlık görüntüsü döndürülecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.