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?

BefittingTheorem
  • 10,459
  • 15
  • 69
  • 96

4 Answers4

1

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 Schneeberger
  • 2,010
  • 20
  • 23
0

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
  • 54,515
  • 14
  • 108
  • 120
0

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
  • 2,850
  • 2
  • 19
  • 18
  • 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? – BefittingTheorem Jan 17 '10 at 08:39
  • 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 Jan 18 '10 at 23:54
0

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

BefittingTheorem
  • 10,459
  • 15
  • 69
  • 96