def java(*args, &block)
options = Hash === args.last ? args.pop : {}
options[:verbose] ||= trace?(:java)
rake_check_options options, :classpath, :java_args, :properties, :name, :verbose
name = options[:name]
if name.nil?
name = "java #{args.first}"
end
cmd_args = [path_to_bin('java')]
cp = classpath_from(options)
cmd_args << '-classpath' << cp.join(File::PATH_SEPARATOR) unless cp.empty?
options[:properties].each { |k, v| cmd_args << "-D#{k}=#{v}" } if options[:properties]
cmd_args += (options[:java_args] || (ENV['JAVA_OPTS'] || ENV['JAVA_OPTIONS']).to_s.split).flatten
cmd_args += args.flatten.compact
unless Buildr.application.options.dryrun
info "Running #{name}" if name && options[:verbose]
block = lambda { |ok, res| fail "Failed to execute #{name}, see errors above" unless ok } unless block
cmd_args = cmd_args.map(&:inspect).join(' ') if Util.win_os?
sh(*cmd_args) do |ok, ps|
block.call ok, ps
end
end
end