class Jars::Classpath
def self.classpath(scope = nil)
def self.classpath(scope = nil) new.classpath(scope) end
def self.classpath_string(scope = nil)
def self.classpath_string(scope = nil) new.classpath_string(scope) end
def self.require(scope = nil)
def self.require(scope = nil) new.require(scope) end
def classpath(scope = nil)
def classpath(scope = nil) classpath = [] process(scope) do |jar| classpath << jar.file end classpath end
def classpath_string(scope = nil)
def classpath_string(scope = nil) classpath(scope).join(File::PATH_SEPARATOR) end
def dependencies_list
def dependencies_list if @deps.nil? deps = Jars.lock_path(mvn.basedir) @deps = deps if deps && File.exist?(deps) end @deps || resolve_dependencies end
def initialize(spec = nil, deps = nil)
def initialize(spec = nil, deps = nil) @spec = spec @deps = deps end
def mvn
def mvn @mvn ||= MavenExec.new(@spec) end
def process(scope, &block)
def process(scope, &block) deps = dependencies_list Lock.new(deps).process(scope, &block) ensure # just delete the temporary file if it exists FileUtils.rm_f(DEPENDENCY_LIST) end
def require(scope = nil)
def require(scope = nil) process(scope) do |jar| if jar.scope == :system Kernel.require jar.path else require_jar(*jar.gacv) end end return unless scope.nil? || scope == :runtime process(:provided) do |jar| Jars.mark_as_required(*jar.gacv) end end
def resolve_dependencies
def resolve_dependencies basedir = workdir('pkg') || workdir('target') || workdir('') deps = File.join(basedir, DEPENDENCY_LIST) mvn.resolve_dependencies_list(deps) deps end
def workdir(dirname)
def workdir(dirname) dir = File.join(mvn.basedir, dirname) dir if File.directory?(dir) end