Thanks. A good first step into using Buildr. http://radioae6rt.wordpress.com/2010/08/27/a-buildr-task-for-jaxb-xjc/
On Aug 26, 2010, at 9:35 PM, Antoine Toulme wrote: > Looking very good. You can externalize the artifact definitions to make it > easy to change versions or for people to add or edit jars, like the > hibernate addon. > > The file(xjcOutput => sources) instruction is a Rake task definition. You > create a file task associated with the path xjcOutput, which is added to the > prerequisites of the sources task. You won't find that info in the Pickaxe, > it's pretty custom stuff. > > Antoine > > > > On Thu, Aug 26, 2010 at 21:18, Mark Petrovic <[email protected]> wrote: > >> Thank you very much. >> >> This works: >> >> xjcOutput=path_to('target/generated-sources/xjc') >> xjc = file(xjcOutput => sources) do |dir| >> ant('xjc') do |ant| >> mkdir_p xjcOutput >> cp = Buildr.artifacts("javax.xml.bind:jaxb-api:jar:2.2.1", >> "com.sun.xml.bind:jaxb-impl:jar:2.2.1", >> "com.sun.xml.bind:jaxb-xjc:jar:2.2.1").each(& >> :invoke).map(& :name).join(File::PATH_SEPARATOR) >> ant.taskdef :name=>"xjc", :classname=>"com.sun.tools.xjc.XJCTask", >> :classpath=>cp >> ant.xjc :schema=>path_to("src/main/resources/c.xsd"), >> :destdir=>path_to(xjcOutput), :package=>"org.foo.api" >> end >> end >> >> How does it look? >> >> >> I'm not really sure what "file(xjcOutput => sources)" actually does, or how >> to interpret it; back to the Pickaxe book! >> >> >> >> On Aug 26, 2010, at 8:27 PM, Antoine Toulme wrote: >> >>> Hello Marc, >>> >>> a few remarks: >>> 1. "#{xjcOutput}" is equivalent to xjcOutput. That should simplify your >>> code. >>> 2. Why bother with mentioning local artifacts ? Do you know which jar you >>> need ? Are they hosted on a maven repository ? >>> If yes, you can do :classpath=> >>> Buildr.artifacts("com.sun.jaxb:jaxb:jar:1.2.3", >>> >> "com.sun.jaxb:jaxb-impl:jar:1.2.3").map(&:to_s).join(File::PATH_SEPARATOR) >>> Your code will work on any machine then. >>> >>> >>> On Thu, Aug 26, 2010 at 18:53, Mark Petrovic <[email protected]> >> wrote: >>> >>>> Hi. I'm new to Buildr, coming from Ant and Maven. I've read the black >>>> Buildr book, and now I'm attempting to do some simple stuff with the >> JAXB >>>> XJC task. Here's what I have so far: >>>> >>>> ... >>>> compile :xjc >>>> package :jar, :id => 'vzapi' >>>> >>>> task :xjc do >>>> begin >>>> ant('xjc') do |ant| >>>> xjcOutput='target/generated-sources/xjc' >>>> rm_rf "#{xjcOutput}" >>>> mkdir_p "#{xjcOutput}" >>>> >>>> >> t=Dir.entries("#{ENV['HOME']}/tools/jaxb-ri/lib").join(File::PATH_SEPARATOR) >>>> puts t >>>> ant.taskdef :name=>"xjc", >>>> :classname=>"com.sun.tools.xjc.XJCTask", :classpath=>"#{t}" >>>> ant.xjc :schema=>"src/main/resources/c.xsd", >>>> :destdir=>"#{xjcOutput}", :package=>"org.foo.api" >>>> end >>>> end >>>> end >>>> >>>> where you can see my horribly clumsy, two-left-foot attempts to put >>>> together a classpath for the Ant taskdef. The JAXB jars are in >>>> ENV['HOME']}/tools/jaxb-ri/lib/*.jar. >>>> >>>> Can someone suggest the "Buildr way" to build this classpath? I've >> studied >>>> the examples referred to here >>>> http://www.mail-archive.com/[email protected]/msg01115.html but >> I'm >>>> still not quite getting it. I'm learning Ruby as I go, having read the >>>> Pickaxe book, but where not a lot of it has sunk in yet. >>>> >>>> Thanks! >>>> >>>> -- >>>> Mark Petrovic >>>> >>>> >>>> >> >> >> -- >> Mark Petrovic >> >> >> -- Mark Petrovic
