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
>
>
>

Reply via email to