class MavenCentralRepo
Attributes
artifactId[R]
groupId[R]
id[R]
pom[R]
version[R]
Public Class Methods
new(id)
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 78 def initialize(id) @id = id d = MavenCentral.id2dict(@id) raise "not a correct id. please use 'groupId:artifactId' or 'groupId:artifactId:version'" if d.nil? # use lastest version by default if d["version"] == nil || d["version"].strip == "" d["version"] = MavenCentral.fetch_lastest_version(d["groupId"], d["artifactId"]) @id = MavenCentral.dict2id(d) end @groupId, @artifactId, @version = d["groupId"], d["artifactId"], d["version"] pom_url = MavenCentral.extract_url_from_dict(d) body = MavenCentral.request(pom_url) @pom = Hash.from_xml( body ) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 156 def <=>(other) id <=> other.id end
==(other)
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 152 def ==(other) other.class == MavenCentralRepo and id == other.id end
dependencies(ignore_test_lib = true)
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 97 def dependencies(ignore_test_lib = true) return [] if @pom["project"]["dependencies"].nil? or (@pom["project"]["dependencies"].class == String and @pom["project"]["dependencies"].strip == "") [@pom["project"]["dependencies"]["dependency"]].flatten.map{|x| next if ignore_test_lib and x["scope"] and x["scope"].strip == "test" if x["version"] =~ /\s*[$]{\s*project[.]version\s*}\s*/ x["version"] = @version end "#{x["groupId"]}:#{x["artifactId"]}:#{x["version"]}" }.compact.sort! end
download(path = ".")
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 160 def download(path = ".") url = jar_url open(File.join(path, url.split("/").last), "w") { |f| f.write MavenCentral.request(url) } end
inspect()
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 148 def inspect @id end
jar_url()
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 109 def jar_url MavenCentral.extract_url_from_id(@id, "jar") end
recursive_dependencies(ignore_test_lib = true, only_select_lastest_version = true)
click to toggle source
# File lib/mvn-get/mvn-get.rb, line 113 def recursive_dependencies(ignore_test_lib = true, only_select_lastest_version = true) return [] if dependencies(ignore_test_lib) == [] return @_recursive_dependencies[ignore_test_lib][only_select_lastest_version] if @_recursive_dependencies and @_recursive_dependencies[ignore_test_lib] and @_recursive_dependencies[ignore_test_lib][only_select_lastest_version] res = [] deps = dependencies(ignore_test_lib) while not deps.empty? d = deps.shift if not res.map{|x| x.id }.include?(d) r = MavenCentralRepo.new(d) if not res.include?(r) if only_select_lastest_version == false or (only_select_lastest_version == true and ( not res.any?{|x| r.groupId == x.groupId and r.artifactId == x.artifactId } or res.any?{|x| r.groupId == x.groupId and r.artifactId == x.artifactId and r.version < x.version }) # lexicographic order ) deps += r.dependencies res << r end end end end if only_select_lastest_version res = res.group_by{|x| "#{x.groupId}:#{x.artifactId}" }.map{|k, v| v.reduce{|s, x| if s.version <=> x.version then x else s end } }.flatten end res.sort! @_recursive_dependencies ||= {} @_recursive_dependencies[ignore_test_lib] ||= {} @_recursive_dependencies[ignore_test_lib][only_select_lastest_version] = res return res end