Пакетный метод не имеет никакого эффекта в Buildr - PullRequest
4 голосов
/ 16 января 2010

Я пытаюсь упаковать проект scala в jar и записать свойства в манифест, используя метод Buildrs package () .

Пакет, похоже, не влияет на Манифест. Вот файл сборки:

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

И вот полученный Манифест:

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

Обратите внимание, что ни свойство реализации-поставщика , ни Main-Class не было перезаписано. Я запускаю Buildr следующим образом:

jruby -S buildr clean package

Я использую jRuby 1.4.0 и Buildr 1.3.5 (установлен как драгоценный камень). Кто-нибудь есть идеи о том, почему это так?

Ответы [ 4 ]

1 голос
/ 16 января 2010

Я быстро проверил это, используя 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

Извините, я не могу сказать вам, почему это работает для меня, но, возможно, мой пост породит некоторые идеи.

0 голосов
/ 01 февраля 2010

Я не могу воспроизвести эту проблему после первоначального появления.

0 голосов
/ 17 января 2010

Я тестировал и C-Ruby 1.8.7, и JRuby 1.4.0, и не могу воспроизвести проблему, используя предоставленную вами buildfile (с buildr 1.3.5 в обоих случаях)

0 голосов
/ 16 января 2010

Попробуйте протестировать buildfile под МРТ 1.8.6, а не на JRuby. Возможно, есть ошибка, которая появляется только во время выполнения (хотя вряд ли). Также возможно, что из-за использования Scala 2.8 возникает какая-то странность. Попробуйте простое приложение с тем же buildfile в Scala 2.7 и посмотрите, поможет ли это.

Мне жаль, что я не могу дать вам ничего, кроме диких догадок на данный момент. Ваш buildfile выглядит так: должен работать, поэтому что-то странное определенно происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...