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

8

Scala REPL非常适合尝试不同的代码片段。如果能够在Scala REPL中使用来自Maven存储库的库运行代码,那就太棒了。如何将远程Maven存储库添加到Scala REPL类路径中?

4个回答

12

你可以使用maven-scala-plugin来完成它:

$ mvn scala:console
...
import com.some.dependency

这太方便了!它有效!!(当Maven被正确配置时) - shahjapan

1
你可以从零开始使用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"

1
我在SBT中处理所有非平凡的事情。在一个地方,即SBT的build.sbt(或.scala,用于高级用途),您可以定义所有依赖项、生成IDE项目文件并运行带有所有依赖项的REPL。

1

您可以使用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 repl,并在类路径中加载所有依赖项。

如果你正在尝试新的东西,我建议使用@Andrzej的方法。

致谢 - @Andrzej


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接