class Jars::MavenExec
def find_spec(allow_no_file)
def find_spec(allow_no_file) specs = Dir['*.gemspec'] case specs.size when 0 raise 'no gemspec found' unless allow_no_file when 1 specs.first else raise 'more then one gemspec found. please specify a specfile' unless allow_no_file end end
def initialize(spec = nil)
def initialize(spec = nil) @options = {} setup(spec) rescue StandardError, LoadError => e # If spec load fails, skip looking for jar-dependencies warn "jar-dependencies: #{e}" warn e.backtrace.join("\n") if Jars.verbose? end
def resolve_dependencies_list(file)
def resolve_dependencies_list(file) factory = MavenFactory.new(@options) maven = factory.maven_new(File.expand_path('gemspec_pom.rb', __dir__)) is_local_file = File.expand_path(File.dirname(@specfile)) == File.expand_path(Dir.pwd) maven.attach_jars(@spec, all_dependencies: is_local_file) maven['jars.specfile'] = @specfile.to_s maven['outputAbsoluteArtifactFilename'] = 'true' maven['includeTypes'] = 'jar' maven['outputScope'] = 'true' maven['useRepositoryLayout'] = 'true' maven['outputDirectory'] = Jars.home.to_s maven['outputFile'] = file.to_s maven.exec('dependency:copy-dependencies', 'dependency:list') end
def ruby_maven_install_options=(options)
def ruby_maven_install_options=(options) @options = options end
def setup(spec = nil, allow_no_file: false)
def setup(spec = nil, allow_no_file: false) spec ||= find_spec(allow_no_file) case spec when String @specfile = File.expand_path(spec) @basedir = File.dirname(@specfile) Dir.chdir(@basedir) do spec = eval(File.read(@specfile), TOPLEVEL_BINDING, @specfile) # rubocop:disable Security/Eval end when Gem::Specification if File.exist?(spec.loaded_from) @basedir = spec.gem_dir @specfile = spec.loaded_from else # this happens with bundle and local gems # there the spec_file is "not installed" but inside # the gem_dir directory Dir.chdir(spec.gem_dir) do setup(nil, allow_no_file: true) end end when nil # ignore else Jars.debug('spec must be either String or Gem::Specification. ' \ 'File an issue on github if you need it.') end @spec = spec end