首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jruby的Sbt插件

jruby的Sbt插件
EN

Stack Overflow用户
提问于 2010-11-26 19:04:30
回答 2查看 598关注 0票数 5

是否有一个可用于sbt的插件,它可以自动安装JRuby并添加一些钩子来在某些点(例如编译之前)自动运行脚本。

背景:对于(lift)项目,我希望使用沙斯,或者更具体地说,使用罗盘作为生成css的工具。不幸的是,Java或Scala的sass克隆是不够的。

当然,只要手动生成css,然后将其放在存储库中,并且没有人需要关心它,就不会有问题了。

另一方面,为了简化几个系统上的开发,我希望sbt内部有一个明确的依赖关系,而sbt就是这样做的。

有办法做到这一点吗?

或者一般情况下:有办法从Scala内部运行JRuby脚本吗?

编辑将maven-2添加到标记中。也许JRuby有一个maven回购,它允许我以某种方式交付和使用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-29 04:13:27

虽然它可能不是最优雅的解决方案,但始终可以使用SBT中的流程支持调用外部脚本。

代码语言:javascript
复制
import sbt._
import Process._

class Project(info: ProjectInfo) extends DefaultProject(info) {
  lazy val runSomething = task {
    "ruby somescript.rb" ! log
    None
  }
}

这里有一些关于外部进程支持的更多信息:http://code.google.com/p/simple-build-tool/wiki/Process

票数 4
EN

Stack Overflow用户

发布于 2011-12-21 00:04:47

试试我在github的sbt插件。现在它非常简单,但是它应该下载jruby,并允许您在编译之前调用.rb文件。

插件的内核非常简单:

代码语言:javascript
复制
    import sbt._

    object SbtJRuby extends Plugin {
      object SbtJRubySettings {
        lazy val settings = Seq(Keys.commands += jirb, tx, jrubyFile := file("fnord.rb"))
      }

      def jirb = Command.args("jirb", "<launch jirb>") { (state, args) =>
        org.jruby.Main.main(List("-S", "jirb").toArray[String])
        state
      }

      val jruby = TaskKey[Unit]("jruby", "run a jruby file")
      val jrubyFile = SettingKey[File]("jruby-file", "path to file to run with JRuby")

      val tx = jruby <<= (jrubyFile, Keys.baseDirectory) map { (f: File, b: File) =>
        val rb = (b / f.toString).toString
        //    println("jruby with " + rb)
        org.jruby.Main.main(List(rb).toArray[String])
      }
    }

实际上,它所做的就是用您传入的rb文件的名称调用jruby文件。当然,将jruby本身添加为托管依赖项:

代码语言:javascript
复制
libraryDependencies ++= Seq(
  "org.jruby" % "jruby-complete" % "1.6.5"
)

它还向Scala控制台添加了一个" jirb“命令,将您放入jirb会话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4287932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档