代码之家  ›  专栏  ›  技术社区  ›  Travis Schneeberger

用ApacheBuildr编译scala 2.8.x代码

  •  7
  • Travis Schneeberger  · 技术社区  · 15 年前

    我一直在努力让builder编译我的scala 2.8项目,我希望有人已经知道了这一点。

    目前我有一个标准的helloworld应用程序,它有一个构建文件,如下所示:

    ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
    ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'
    
    define "HelloWorld" do
    
      #artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'
      require 'buildr/scala'
    
      puts Scala.version
    
    end
    

    当我运行builder时,得到以下输出:

    (在c:/users/travis/eclipse-ws/helloworld,开发中)
    2.7.5
    建造地狱世界
    将helloworld编译成c:/users/travis/eclipse_ws/helloworld/target/classes
    中止了!
    [31mscala编译器崩溃:
    [0]

    第一个问题是noclasDefoundError-它找不到scala编译器的主类。第二个问题是scala.version正在打印出2.7.5。这是不正确的,因为scala_主路径指向2.8版本。

    最后,使用--trace标志向我展示了builder正在生成一个稍微正确的scalac命令,当我手动运行该命令时,所有内容都会编译。我说这有点正确,只是因为有些CP条目是重复的。请参见以下内容:

    scalacac-class路径c:/scala-2.8.0.beta1-rc6/lib/scala-libliblibliblibra.jar;c:/scala-2.8.0.beta1-rc6/lib/scala编译器.jar;c:/scala-2.8.0.beta1-RC6/lib/scala-lib lib lib lib lib lib lib.scala-lib.jar;c:/scala-2.8.0.beta1-RC6/lib/scala-comp编译器.jar-sourc路径c:/user/travis/travis/travis/travis/tovis/Eclipse/windows/helloworld/hellow世界d/hellowworld/hellowworld/hellowworld/windows/hellowworld目标/类-详细-g c:/用户/travis/eclipse_ws/helloworld/src/main/scala/hw/helloworld.scala

    我还尝试了一件事(但建筑商出了差错),那就是设置以下内容(我认为在斯卡拉·豪宅的存在下不需要这些内容):

    #artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'
    

    有什么想法吗?

    以下是我的系统信息的快速列表: 赢7 64位 为builder本地设置了JDK 6 32位,但在系统范围内设置了JDK 6 64位 Ruby 1.8.6 32位 builder 1.3.5 32位 比例尺2.8.0.beta1-rc6

    我想做的另一件事是重新安装我的32位JDK,并将它与(x86)一起从目录中取出。我发现了scala-bat文件的螺丝钉,尽管我不确定这是否与我目前的问题有关。

    事先谢谢!

    3 回复  |  直到 14 年前
        1
  •  3
  •   Travis Schneeberger    15 年前

    明白了。愚蠢的问题。在builder中(或者更一般地在ruby中?),require方法调用必须位于文件的顶部(或至少不在define块内)。

    需要“builder/scala”

    因此,noclasDefoundError和puts scala.version显示的不正确版本都被纠正了。我的脚本应该是这样的:

    require 'buildr/scala'
    
    ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
    ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'
    
    define 'HelloWorld' do
    
      puts Scala.version
    
    end
    

    顺便说一句:一旦你想清楚你在做什么,builder看起来很可爱(快速、简洁、约定优于配置等)。

        2
  •  2
  •   Rafa de Castro    14 年前

    对于1.4版,现在您可以

    Buildr.settings.build['scala.version'] = "2.8.0"
    require 'buildr/scala'
    

    它将使用scala 2.8。

        3
  •  1
  •   Antoine Toulme    14 年前

    Builder1.4支持scala 2.8,默认情况下1.4.2将使用2.8。

    推荐文章