Scala REPL:如何将远程Maven存储库添加到Scala REPL类路径?

时间:2013-03-27 18:18:05

标签: scala maven read-eval-print-loop

Scala REPL非常适合尝试不同的代码片段。如果可以使用Scala REPL中Maven存储库中的库运行代码,那将是很棒的。如何将远程Maven存储库添加到Scala REPL类路径?

4 个答案:

答案 0 :(得分:10)

您可以使用maven-scala-plugin

执行此操作
$ mvn scala:console
...
import com.some.dependency

答案 1 :(得分:1)

我在SBT中做一切非平凡的事情。在一个地方,SBT build.sbt(或.scala,用于高级用途),您可以定义所有依赖项,生成IDE项目文件并运行REPL,其中包含类路径中存在的所有依赖项。

答案 2 :(得分:0)

您可以从头开始-带有sbt-但没有build.sbt

首先创建sbt项目:

sbt -sbt-create

现在添加解析器(或其他变量)

set resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"

您可以修改所有设置。例如添加依赖项

set libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.2.3"

仅供测试:

sbt:test> console
[info] Updating ...
[info] Done updating.
[info] Starting scala interpreter...
Welcome to Scala 2.12.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201).
Type in expressions for evaluation. Or try :help.

scala> import org.slf4j._
import org.slf4j._

scala> val logger = LoggerFactory.getLogger("Test")
logger: org.slf4j.Logger = Logger[Test]

scala> val logger = LoggerFactory.getLogger("Test")
logger: org.slf4j.Logger = Logger[Test]

如果您要保留设置,只需调用即可(您可以使用CRTL + D退出交互式控制台模式)

sbt:test> session save

您的输出将保存在当前目录的build.sbt中。

对于linux / mac

> cat build.sbt

对于Windows(未经测试)

> type build.sbt

输出:

resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"

libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.2.3"

答案 3 :(得分:0)

您可以仅使用build.sbt文件来测试代码 我必须访问S3 Java代码才能在远程服务器上对其进行测试。

$ mkdir code-test
$ mkdir -p code-test/project
$ cd code-test
$
$ touch build.sbt
$
$ touch project/build.properties
$ echo 'sbt.version = 1.3.10' > project/build.properties
$
$ touch project/plugins.sbt
$ echo 'addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")' > project/plugins.sbt

我在这里使用多个依赖项以及一个解析器进行演示。

请随意填充您的build.sbt。

我的参考

$ cat build.sbt

resolvers ++= Seq(
  "Redshift" at "http://redshift-maven-repository.s3-website-us-east-1.amazonaws.com/release"
)

libraryDependencies ++= Seq(
        "com.amazonaws" % "aws-java-sdk-s3" % "1.11.785",
        "com.amazon.redshift" % "redshift-jdbc42" % "1.2.41.1065"
)

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs@_*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

一旦文件中具有适当的依赖项。

$ sbt

[info] Loading project definition from /home/snk01/code-test/project
[info] Loading settings for project code-test from build.sbt ...
...
[info] Starting scala interpreter...
Welcome to Scala 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181).
Type in expressions for evaluation. Or try :help.

$ sbt:code-test>

这将加载所有依赖项

$ sbt:code-test> console

上面的行将启动一个scala复制,并将所有依赖项加载到您的类路径中。

如果您要开始/尝试一些新的东西,我建议您使用@Andrzej的方法。

信用-@Andrzej