module Buildr::JaxbXjc

Public Class Methods

dependencies() click to toggle source

The specs for requirements

# File addon/buildr/jaxb_xjc.rb, line 25
def dependencies
  [
    "javax.xml.bind:jaxb-api:jar:#{jaxb_version}",
    "com.sun.xml.bind:jaxb-impl:jar:#{jaxb_version}",
    "com.sun.xml.bind:jaxb-xjc:jar:#{jaxb_version}"
  ]
end
jaxb_version() click to toggle source
# File addon/buildr/jaxb_xjc.rb, line 20
def jaxb_version
  '2.2.1'
end
remote_repository() click to toggle source

Repositories containing the requirements

# File addon/buildr/jaxb_xjc.rb, line 34
def remote_repository
  'http://download.java.net/maven/2'
end
xjc(*args) click to toggle source
# File addon/buildr/jaxb_xjc.rb, line 38
def xjc(*args)
  cp = Buildr.artifacts(self.dependencies).each(&:invoke).map(&:to_s)
  Java::Commands.java 'com.sun.tools.xjc.XJCFacade', *(args + [{ :classpath => cp }])
end

Public Instance Methods

compile_jaxb(files, *args) click to toggle source
# File addon/buildr/jaxb_xjc.rb, line 44
def compile_jaxb(files, *args)
  options = Hash === args.last ? args.pop.dup : {}
  rake_check_options options, :directory, :keep_content, :package, :id
  args = args.dup
  files = Array === files ? files.flatten : [files]

  target_dir = File.expand_path(options[:directory] || _(:target, :generated, :jaxb, 'main/java'))
  timestamp_file = File.expand_path("#{target_dir}/jaxb-#{options[:id] || 1}.cache")

  project.iml.main_generated_source_directories << target_dir if project.iml?

  file(target_dir => timestamp_file)

  file(timestamp_file => files.flatten) do |task|
    rm_rf target_dir unless options[:keep_content]
    mkdir_p target_dir
    args << '-d' << target_dir
    args << '-p' << options[:package] if options[:package]
    args += files.collect{|f| f.to_s}
    JaxbXjc.xjc args
    touch timestamp_file
  end

  target_dir
end