Nice! Retweeted with the buildr account, and if you want tomorrow I'll bundle your code as a buildr extension.
On Fri, Aug 27, 2010 at 09:23, Mark Petrovic <[email protected]> wrote: > 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 > > >
