我想在厨师食谱中做这样的事情:
maven_artifact "/opt/foo/my.jar" do
source "com.foo:my:0.1:jar"
end
Run Code Online (Sandbox Code Playgroud)
但是我找不到提供此功能的食谱。我写了一些基本上做到这一点的东西,但它不处理快照,这需要解析 maven-metadata.xml。在我深入研究之前,我想确保我没有遗漏一些明显的东西,因为这似乎是一个基本的用例。
小智 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5871 次 |
| 最近记录: |