Есть ли Python-ealy способ запуска скриптов Scala с зависимостями? - PullRequest
4 голосов
/ 10 сентября 2011

Насколько я знаю, пока

  • Создайте файл ant build.xml, выполните задачи компиляции и запуска и включите соответствующие jar-файлы в classpath=

  • Сделать в sbt проекте и включить зависимости с номерами версий в build.sbt

  • Создать проект maven и включить зависимости в xml-файл

  • Запуск из командной строки с настройкой -classpath явным образом

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

import json

json.loads('[1, 2]')

и с этой работой сразу, если у меня установлен json. В частности, отслеживание соответствующих версий на Mavenhub становится немного утомительным.

Хотя, может быть, я просто слишком разборчив; -)

Ответы [ 2 ]

7 голосов
/ 10 сентября 2011

То, что вы хотите, это xsbtscript: https://github.com/paulp/xsbtscript

Это позволяет вам создать один файл сценария, который включает в себя как конфигурацию sbt, которую требует ваш код, так и сам код Scala.

2 голосов
/ 15 сентября 2011

Я думаю скалас из SBT лучше.Либо установите conscript и выполните эту команду:

cs harrah/xsbt --branch v0.10.1

Или создайте его вручную:

java -Dsbt.main.class=sbt.ScriptMain -Dsbt.boot.directory=/home/user/.sbt/boot -jar sbt-launch.jar "$@"

И затем используйте его так:

#!/usr/bin/env scalas
!#

/***
scalaVersion := "2.9.0-1"

libraryDependencies ++= Seq(
  "net.databinder" %% "dispatch-twitter" % "0.8.3",
  "net.databinder" %% "dispatch-http" % "0.8.3"
)
*/

import dispatch.{ json, Http, Request }
import dispatch.twitter.Search
import json.{ Js, JsObject }

def process(param: JsObject) = {
  val Search.text(txt)        = param
  val Search.from_user(usr)   = param
  val Search.created_at(time) = param

  "(" + time + ")" + usr + ": " + txt
}

Http.x((Search("#scala") lang "en") ~> (_ map process foreach println))

Paul's xsbtscript - это, по сути, оболочка, которая загружает и устанавливает все необходимые компоненты, чтобы сделать то же самое.Обычно он работает хорошо, но имеет некоторые ограничения (например, не будет проходить проверку подлинности прокси).

...