小编cal*_*org的帖子

如何防止SBT将测试依赖项包含到POM中

我有一个小的实用程序scala构建与专用测试文件夹下的测试类.编译然后publish-local在我的本地存储库中创建包.

正如预期的那样,测试文件夹会自动从实用程序包的本地jar中排除.

但是,生成的POM仍包含sbt中定义的相关依赖项.SBT依赖:

libraryDependencies ++= Seq(
  "org.scalactic" %% "scalactic" % "3.0.0" % Test,
  "org.scalatest" %% "scalatest" % "3.0.0" % Test
)
Run Code Online (Sandbox Code Playgroud)

POM的部分:

<dependency>
    <groupId>org.scalactic</groupId>
    <artifactId>scalactic_2.11</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest_2.11</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

范围显然需要进行测试,以防止使用此库的另一个项目(主)中的问题.特别是,主项目的测试否则包括这些测试库,这会导致版本冲突等.

由于这些依赖项仅适用于未包含的测试包,因此将它们列在POM中似乎很愚蠢.如何告诉SBT不要将这些测试范围依赖项包含在最终的POM中?

scala sbt

8
推荐指数
1
解决办法
757
查看次数

如何防止Scala Futures造成内存泄漏

我有大量并行进程运行.似乎仅仅创建了并行scala Futures会造成内存泄漏.

示例代码如下.根据您的机器设置VM标志,以便在您有多个内核时,它不会在开始时直接转储," - Xmx100m -XX:+ HeapDumpOnOutOfMemoryError".

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration._

object Bug extends App {
    println("Memory leak")
    while(true){
        Future {
            val data = new Array[Byte](1000000*1) // 1 MB
            println(".")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

几分钟后,此代码将显着减慢.堆转储分析显示数组scala.concurrent.forkjoin.ForkJoinTask []似乎溢出.

以下链接似乎相关,但并未真正提供任何解决方案:https://issues.scala-lang.org/browse/SI-7336

memory-leaks scala

3
推荐指数
1
解决办法
1362
查看次数

标签 统计

scala ×2

memory-leaks ×1

sbt ×1