【发布时间】:2017-05-30 21:58:20
【问题描述】:
我有一个小型实用程序 scala 在专用测试文件夹下构建了测试类。编译然后publish-local 在我的本地存储库中创建包。
正如预期的那样,测试文件夹会自动从实用程序包的本地 jar 中排除。
但是,生成的 POM 仍然包含 sbt.xml 中定义的相关依赖项。 SBT 依赖项:
libraryDependencies ++= Seq(
"org.scalactic" %% "scalactic" % "3.0.0" % Test,
"org.scalatest" %% "scalatest" % "3.0.0" % Test
)
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>
显然需要测试范围,以防止使用此库的另一个项目(主)出现问题。尤其是主项目的测试,否则会包含这些测试库,导致版本冲突等。
由于这些依赖项仅适用于未包含的测试包,因此将它们列在 POM 中似乎很愚蠢。如何告诉 SBT 不要将这些测试范围依赖项包含到最终 POM 中?
【问题讨论】:
-
这是
% "test",而不是% Test -
它应该可以工作scala-sbt.org/1.0/docs/…
-
但无论如何,您可以尝试使用“test”以确保它不是任何奇怪的 sbt 错误
-
@pedrorijo91 对“test”的更改不会更改包含在 POM 中。