8

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

4

4 回答 4

12

你可以做到这一点,使用maven-scala-plugin

$ mvn scala:console
...
import com.some.dependency
于 2013-03-27T18:24:55.323 回答
1

我在 SBT 中做的每一件事都非常重要。在一个地方,您定义所有依赖项的 SBT build.sbt(或用于高级用途)、生成 IDE 项目文件并使用类路径中存在的所有依赖项运行 REPL。.scala

于 2013-03-27T22:56:11.417 回答
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"
于 2019-04-06T19:57:45.457 回答
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

于 2020-05-19T22:44:36.607 回答