scala - 打包方法在 Buildr 中无效

标签 scala jar manifest buildr

我正在尝试将 scala 项目打包到 jar 中,并使用 Buildrs package() 方法将属性写入 list 。

该包似乎对 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

这是生成的 list :

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-VendorMain-Class 属性都没有被覆盖。我按如下方式运行 Buildr:

jruby -S buildr clean package

我正在使用 jRuby 1.4.0 和 Buildr 1.3.5(作为 gem 安装)。有人对为什么会出现这种情况有任何想法吗?

最佳答案

我使用 buildr 1.3.5 + Ruby 1.8.6 快速测试了这一点,并得到了正确的 list 。我对构建文件做了一些小更改,这些更改似乎对于您的明显问题来说并不重要。这是我的测试构建文件:

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

这是最终的 list :

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

抱歉,我无法告诉您为什么它对我有用,但也许我的帖子会产生一些想法。

关于scala - 打包方法在 Buildr 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2076784/

相关文章:

android - 以管理员身份运行 Android 应用

c# - 向 CSC 命令行添加标志

scala - 如何使用Spark Sql进行递归查询

Scala、Play、Akka、Websocket : how to pass actor messages through websocket

java - 将 JAR 文件添加到 web-inf/lib 文件夹而不将其包含在 pom.xml 中

java - 如何正确导出我的程序

node.js - 将 Node.js 应用程序部署到 Cloud Foundry 后,浏览器无法解析 Node.js 应用程序中的 manifest.json

list - 将项目添加到不可变的 Seq

java - 通过 Gradle 进行测试时的日志记录

linux - 错误 : Invalid or corrupt jarfile occured while trying to build recommendation engine of PredictionIO in Linux machine