我正在尝试将scala项目打包到jar中,并使用Buildrs package()方法将属性写入Manifest。
该软件包似乎对Manifest没有任何影响。这是构建文件:
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
这是由此产生的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
请注意, Implementation-Vendor 或 Main-Class 属性均未被覆盖。我按如下方式运行Buildr:
jruby -S buildr clean package
我正在使用jRuby 1.4.0和Buildr 1.3.5(作为gem安装)。任何有关为什么会出现这种情况的想法?
答案 0 :(得分:1)
我使用buildr 1.3.5 + Ruby 1.8.6快速测试了这个并得到了正确的清单。我对构建文件做了一些小改动,看起来它们对你的清单问题无关紧要。这是我的测试构建文件:
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
以下是结果清单:
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
对不起,我不能告诉你为什么它对我有用,但也许我的帖子会产生一些想法。
答案 1 :(得分:0)
尝试在MRI 1.8.6而不是JRuby下测试buildfile
。可能存在一个只在该运行时出现的错误(尽管不太可能)。由于您使用Scala 2.8,也可能会出现一些奇怪现象。在Scala 2.7下尝试使用相同buildfile
的简单应用,看看是否有帮助。
对不起,我现在不能再给你猜测了。您的buildfile
看起来应该工作,所以奇怪的事情肯定会发生。
答案 2 :(得分:0)
我已经使用C-Ruby 1.8.7和JRuby 1.4.0进行了测试,我无法使用您提供的buildfile
(在两种情况下都使用buildr 1.3.5)重现该问题
答案 3 :(得分:0)
首次出现后我无法重现此问题。