Bundle my code? Heck yes! On Aug 27, 2010, at 9:44 AM, Antoine Toulme wrote:
> 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 >> >> >> -- Mark Petrovic
