Maven 2 jruby的Sbt插件

Maven 2 jruby的Sbt插件,maven-2,scala,jruby,sass,sbt,Maven 2,Scala,Jruby,Sass,Sbt,是否有一个sbt插件可以自动安装JRuby,并添加一些钩子在某些点(例如编译之前)自动运行脚本 背景:对于(lift)项目,我想使用,或者更具体地说,作为生成css的工具。不幸的是,sass的Java或Scala克隆是不够的 当然,只要手动生成css,然后将它们都放在存储库中,就不会有任何问题,而且没有人需要关心它 另一方面,为了简化在几个系统上的开发,我宁愿在sbt中有一个明确的依赖项,它只是简单地完成工作 有什么办法可以做到这一点吗? 或者一般来说:有没有从Scala内部运行JRuby脚本的

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

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

当然,只要手动生成css,然后将它们都放在存储库中,就不会有任何问题,而且没有人需要关心它

另一方面,为了简化在几个系统上的开发,我宁愿在sbt中有一个明确的依赖项,它只是简单地完成工作

有什么办法可以做到这一点吗?
或者一般来说:有没有从Scala内部运行JRuby脚本的方法


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

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

import sbt._
import Process._

class Project(info: ProjectInfo) extends DefaultProject(info) {
  lazy val runSomething = task {
    "ruby somescript.rb" ! log
    None
  }
}
这里提供了有关外部流程支持的更多信息:

从github尝试my。目前它还很简单,但是它应该下载JRubyJAR并允许您在编译之前调用.rb文件

插件的核心非常简单:

    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])
      }
    }

它还向Scala控制台添加了一个“jirb”命令,使您进入一个jirb会话。

但不幸的是,它需要安装ruby。我宁愿让sbt处理所有的依赖关系。这很公平。将jruby添加为依赖项应该很容易,但是让SBT调用它需要更多的工作。我可能会接触到脚本API,但我已经很久没有使用它了,所以编写一个示例需要一些时间。我希望有这个选择,所以我会调查一下,看看我能想出什么。这很好。现在,我如何使用它通过bundler安装和执行gems?
libraryDependencies ++= Seq(
  "org.jruby" % "jruby-complete" % "1.6.5"
)