Thanks.

That's a goodly chunk of information.  I understand the concept of changing the 
layout, and why you might want to do it to add source code paths to the 
defaults for compile.  But for the JAXB XJC operation specifically, I need some 
processing to happen before compile happens, namely the XSD file has to be 
processed to produce JAXB Java classes.  Where does that happen in the scheme 
below?  Maybe you are speaking to a more general point, where the question 
doesn't actually operate.

One thing that could be generalized with respect to the inline JAXB task is to 
parametrize the task with respect to the location of the XSD file so other 
projects can use it.  Hmm.

On Aug 27, 2010, at 9:15 AM, Ed Smiley wrote:

> As you intuitively know, you don't really need to use ant to do much of
> anything inside Buildr.
> 
> By changing the settings for the target and source you can take care of the
> file management automatically.  Cleaning, rebuilding, dependencies etc. By
> setting compile with, you can add all your dependencies.
> 
> Here's an example:
> 
> To set the target and source, you define a "layout" which reassigns the
> defaults, for example, to change your Java source to src/, and to use a
> custom built_dir/ target directory,
> 
>  my_layout = Layout.new
>  my_layout[:source, :main, :java] = 'src'
>  my_layout[:target, :main] = 'build_dir'
> Then make your project use it:
> 
> define "myproject" , *:layout=>my_layout *do
> 
> to add dependencies,
> 
> define an array of libraries and paths, for example
> AXIS2 = 'org.apache.axis2:axis2:jar:1.2'
> LIB = ["jars/*.jar", AXIS2]
> 
> and change the compile directive to use with:
> 
> ...
> 
> compile.with LIB# Added classpath dependencies
>    package(:jar)
> end
> 
> So this will compile and jar using both an external dependency, which will
> be automatically downloaded, and your local libraries.  You can pretty much
> run Java directly from inside Buildr too: Java.System.out.println("this
> prints")
> That might be an easier way fo running JAXB.
> 
> 
> On Thu, Aug 26, 2010 at 6:53 PM, 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


Reply via email to