views:

151

answers:

4

I'm trying to package a scala project into a jar and write properties to the Manifest using Buildrs package() method.

The package seems to have no affect on the Manifest. Here's the build file:

VERSION_NUMBER = "1.0.0"
GROUP = "Green"
COPYRIGHT = "Green CopyRight"

require 'buildr/scala'

Buildr::Scala::Scalac::REQUIRES.library = '2.8.0-SNAPSHOT'
Buildr::Scala::Scalac::REQUIRES.compiler = '2.8.0-SNAPSHOT'
Java.classpath.reject! { |c| c.to_s.index('scala') }
Java.classpath << Buildr::Scala::Scalac::REQUIRES

ENV['USE_FSC'] = 'yes'

repositories.remote << "http://www.ibiblio.org/maven2/"

desc "The Green project"
define "Green" do
    project.version = VERSION_NUMBER
    project.group = GROUP
    package(:jar).with :manifest=>manifest.merge(
        'Main-Class'=>'com.acme.Main',
        'Implementation-Vendor'=>COPYRIGHT
    )
end

And here's the resulting Manifest:

Build-By: brianheylin
Build-Jdk: 1.6.0_17
Implementation-Title: The Green project
Implementation-Version: 
Implementation-Vendor: 
Main-Class: green.GreenMain
Manifest-Version: 1.0
Created-By: Buildr

Notice that neither the Implementation-Vendor or Main-Class property has been overwritten. I run Buildr as follows:

jruby -S buildr clean package

I'm using jRuby 1.4.0 and Buildr 1.3.5 (installed as a gem). Anyone any ideas on why this is the case?

+1  A: 

I tested this quickly using buildr 1.3.5 + Ruby 1.8.6 and got the correct manifest. I made a few small changes to the buildfile which seem like they shouldn't matter in regards to your manifest problem. Here is my test buildfile:

ENV['JAVA_HOME'] = 'C:\Java\32\jdk1.6.0_17'

VERSION_NUMBER = "1.0.0"
GROUP = "Green"
COPYRIGHT = "Green CopyRight"

require 'buildr/scala'

desc "The Green project"
define "Green" do
    project.version = VERSION_NUMBER
    project.group = GROUP
    package(:jar).with :manifest=>manifest.merge(
        'Main-Class'=>'com.acme.Main',
        'Implementation-Vendor'=>COPYRIGHT
    )
end

And here is the resulting manifest:

Implementation-Vendor: Green CopyRight
Manifest-Version: 1.0
Build-By: Travis
Created-By: Buildr
Build-Jdk: 1.6.0_17
Implementation-Title: The Green project
Implementation-Version: 
Main-Class: com.acme.Main

Sorry I can't tell you why it works for me but maybe my post will spawn some ideas.

Travis
Thanks Travis, I'm thinking along the same lines as Daniel, this seems to be a bug specific to jRuby or the scala 2.8 usage.
Brian Heylin
A: 

Try testing your buildfile under MRI 1.8.6 rather than JRuby. It's possible there is a bug which only comes out in that runtime (unlikely though). It's also possible that there is some weirdness arising due to your use of Scala 2.8. Try a simple app with the same buildfile under Scala 2.7 and see if that helps.

I'm sorry that I can't give you any more than wild guesses at this point. Your buildfile looks like it should work, so something bizarre is definitely going on.

Daniel Spiewak
Thanks Daniel that was my next port of call. But first... dinner time :)
Brian Heylin
A: 

I've tested with both C-Ruby 1.8.7 and JRuby 1.4.0 and I can't reproduce the issue using the buildfile your provided (with buildr 1.3.5 in both cases)

Alex Boisvert
Thanks Alex, I'm now in the situation where I cannot reproduce it. And If I was doing something stupid to cause it then I also don't what it was :) I'm wondering what the best thing to do with this question is, answer that I can't reproduce? Or delete it?
Brian Heylin
Yes, answering that you can't reproduce and leaving it open for a little while. Who knows, maybe somebody else will run into this issue. (My 0.02c)
Alex Boisvert
A: 

I can't reproduce this issue after the initial occurrence.

Brian Heylin