Thanks Kevin, The final solution I came up with uses OneJar. There is a modest startup delay of the order of 1s, but no significant runtime penalty. Packaging takes about 1.5s versus about 30s for flattening the jars out into classes. I'm not sure why that is, but its vastly better for the code dev cycle.
MYJAR = '/path/to/myjar.jar' ONEJAR = 'lib/one-jar-boot-0.97.jar' DEPS = [ ARGS4J, JASYPT, WEB, ORIENTDB ].flatten repositories.remote << 'http://repo1.maven.org/maven2' define 'MyProject' do project.version = VERSION_NUMBER project.group = 'mygroup' compile.options.target = '1.7' define 'server' do compile.with DEPS, MYJAR package(:jar) end package(:jar).path("lib").tap do |p| p.include DEPS.each {|d| p.include artifact(d).to_s} p.include MYJAR end package(:jar).path("main").tap do |p| p.include project('server').package(:jar) end package(:jar).merge(ONEJAR) package(:jar).with :manifest=>manifest.merge( 'One-Jar-Main-Class'=>'com.myproject.control.Start', 'Main-Class'=>'com.simontuffs.onejar.Boot' ) end Thanks everyone for your help. Can I just make a comment about the Buildr API documentation, which I'm guessing is a generic Ruby doc format? I just don't get it at all, I've relied totally on the Quick Start on the webpage, and these few examples. I have no Ruby background, but know Python (and the C languages). For example, if I want to know what methods are associated with "package" I just can't figure that out. Maybe its me. hoogs On Mon, Apr 15, 2013 at 9:19 PM, Kevin Smith <[email protected]>wrote: > On 04/15/2013 06:49 AM, Jason Hoogland wrote: > >> Sorry, and any ideas on dealing with manifest.mf overwrite? >> > > Here is a fragment from our buildr script: > > p.with :manifest=>{'Main-Class'=>'**org.martus.client.swingui.** > Martus'} > p.include(File.join(_('source'**, 'test', 'java'), '**/*.mlp')) > p.merge(project('martus-jar-**verifier').package(:jar)).** > exclude('META-INF/MANIFEST.MF'**) > > It merges in a jar build by a different sub-script, omitting that other > manifest. > > Kevin > >
