def apt(*args)
options = Hash === args.last ? args.pop : {}
rake_check_options options, :compile, :source, :output, :classpath
files = args.flatten.map(&:to_s).
collect { |arg| File.directory?(arg) ? FileList["#{arg}/**/*.java"] : arg }.flatten
cmd_args = [ trace?(:apt) ? '-verbose' : '-nowarn' ]
if options[:compile]
cmd_args << '-d' << options[:output].to_s
else
cmd_args << '-nocompile' << '-s' << options[:output].to_s
end
cmd_args << '-source' << options[:source] if options[:source]
cp = classpath_from(options)
cmd_args << '-classpath' << cp.join(File::PATH_SEPARATOR) unless cp.empty?
cmd_args += files
unless Buildr.application.options.dryrun
info 'Running apt'
trace (['apt'] + cmd_args).join(' ')
Java.load
::Java::com.sun.tools.apt.Main.process(cmd_args.to_java(::Java::java.lang.String)) == 0 or
fail 'Failed to process annotations, see errors above'
end
end