Yes, we still don't have better support for transitive dependencies. Instead of doing a system call, you could potentially use the Java::Commands::java method, with a :classpath option to set the classpath.
Antoine On Tue, Sep 21, 2010 at 08:16, David Yang <[email protected]> wrote: > > I know this has been discussed here ( > http://groups.google.com/group/buildr-talk/browse_thread/thread/9f3694f43f23a701 > ) > > But wanted to open up the issue again: > > I've spent the last few years doing Ruby so I'm not super-familiar with how > Java handles bundling dependencies (most of what I have seen is Maven's > system/local repos, haven't seen how ivy handles anything). > > I have a project that has several deps both in Maven repos and from sub > projects - the way I run the Main class right now is: > > define 'router' do > compile.with transitive(CAMEL, CAMEL_FTP, project('other-project')) > package(:jar).with > :manifest=>manifest.merge('Main-Class'=>'com.company.route.Route') > > task :run => :compile do > puts resources.target > deps = compile.dependencies + [compile.target] + [resources.target] > cp = deps.join(":") > puts cp > system "java -cp #{cp} com.company.route.Route" > end > > > Is this the right way to think about it? > > Also, if I bundle resources with other projects in jar files, or in this > project, how do I add those to the classpath as well? > > Sorry for the newbie questions - the above feels gross to me and I'm just > wondering if there's something obvious I'm missing. > > Thanks, > David
