【发布时间】:2013-03-17 23:32:55
【问题描述】:
Scala REPL 非常适合尝试不同的代码 sn-ps。如果可以使用 Scala REPL 中的 Maven 存储库中的库运行代码,那就太好了。如何将远程 Maven 存储库添加到 Scala REPL 类路径?
【问题讨论】:
标签: scala maven read-eval-print-loop
Scala REPL 非常适合尝试不同的代码 sn-ps。如果可以使用 Scala REPL 中的 Maven 存储库中的库运行代码,那就太好了。如何将远程 Maven 存储库添加到 Scala REPL 类路径?
【问题讨论】:
标签: scala maven read-eval-print-loop
你可以做到,使用maven-scala-plugin:
$ mvn scala:console
...
import com.some.dependency
【讨论】:
我在 SBT 中做的每一件事都不平凡。在一个地方,SBT build.sbt(或 .scala,用于高级用途)定义所有依赖项,生成 IDE 项目文件并运行 REPL,所有依赖项都存在于类路径中。
【讨论】:
您可以从头开始 - 使用 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"
【讨论】:
您可以只使用 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
【讨论】: