2010-01-16 10 views
4

J'essaye de mettre en package un projet scala dans un pot et d'écrire des propriétés dans le manifeste à l'aide de la méthode Buildrs package().Méthode de package n'ayant aucun effet dans Buildr

Le package semble n'avoir aucun effet sur le manifeste. Voici le fichier de construction:

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 

Et voici le résultat 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 

Notez que ni la mise en œuvre -fournisseur ou propriété Main-Class a été écrasé. Je lance Buildr comme suit:

jruby -S buildr clean package 

J'utilise JRuby 1.4.0 et 1.3.5 Buildr (installé comme une pierre précieuse). Quelqu'un a des idées sur pourquoi c'est le cas?

Répondre

0

je peux Ne pas reproduire ce problème après l'apparition initiale.

1

Je l'ai testé rapidement en utilisant buildr 1.3.5 + Ruby 1.8.6 et j'ai obtenu le bon manifeste. J'ai apporté quelques petits changements au buildfile qui semblent ne pas avoir d'importance en ce qui concerne votre problème manifeste. Voici mon 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 

Et voici le manifeste résultant:

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 

Désolé je ne peux pas vous dire pourquoi cela fonctionne pour moi, mais peut-être que mon message va apparaître quelques idées.

+1

Merci Travis, je pense dans le même sens que Daniel, cela semble être un bug spécifique à jRuby ou à l'utilisation de scala 2.8. –

+0

Pourquoi la version d'implémentation manque-t-elle ici, bien qu'elle soit définie sur le projet? – Trejkaz

0

Essayez de tester votre buildfile sous IRM 1.8.6 plutôt que JRuby. Il est possible qu'il y ait un bug qui n'apparaît que dans ce runtime (ce qui est peu probable). Il est également possible que l'utilisation de Scala 2.8 entraîne une certaine bizarrerie. Essayez une application simple avec le même buildfile sous Scala 2.7 et voir si cela aide.

Je suis désolé de ne pouvoir vous donner plus que des suppositions sauvages à ce stade. Votre buildfile ressemble à devrait de travail, donc quelque chose de bizarre se passe définitivement.

+0

Merci Daniel c'était mon prochain port d'escale. Mais d'abord ... l'heure du dîner :) –

0

Je l'ai testé avec les deux C-Ruby 1.8.7 et JRuby 1.4.0 et je ne peux pas reproduire le problème en utilisant le buildfile votre fourni (avec buildr 1.3.5 dans les deux cas)

+0

Merci Alex, je suis maintenant dans la situation où je ne peux pas le reproduire. Et si je faisais quelque chose de stupide pour le provoquer alors je ne sais pas ce que c'était :) Je me demande quelle est la meilleure chose à faire avec cette question, répondez que je ne peux pas reproduire? Ou supprimer? –

+0

Oui, en répondant que vous ne pouvez pas reproduire et en laissant ouvert pendant un petit moment. Qui sait, peut-être que quelqu'un d'autre se heurtera à ce problème. (Mon 0.02c) –