【问题标题】:Scala REPL: How to add remote Maven repository to Scala REPL classpath?Scala REPL:如何将远程 Maven 存储库添加到 Scala REPL 类路径?
【发布时间】:2013-03-17 23:32:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你可以做到,使用maven-scala-plugin:

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

    【讨论】:

    • 这太方便了!有用 !! (当 Maven 配置正确时)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以从头开始 - 使用 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"
      

      【讨论】:

        【解决方案4】:

        您可以只使用 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-01
          • 2014-08-22
          • 2012-04-22
          • 2013-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多