如何将sbt项目的测试范围工件添加到另一个测试类路径?

Mar*_*rek 6 sbt

有两个sbt项目:commonprojectX.

该项目common已在一些依赖test范围,我想看到的test在classpath中projectX具有common作为依赖.

这是摘录从build.sbtprojectXtest->test配置映射中所描述的配置:

libraryDependencies ++= Seq(
  "org" %% "common" % "0.1" % "compile->compile;test->test"
)
Run Code Online (Sandbox Code Playgroud)

执行test:compileprojectX出现以下错误:

[error](*:update)sbt.ResolveException:unresolved dependency:org#common_2.10; 0.1:org中的公共配置#common_2.10; 0.1:'test'.需要从org#projectX_2.10; 0.0.1-SNAPSHOT测试

如何将test项目中的-scoped依赖项添加到项目common中的test类路径projectX

Jac*_*ski 4

我以前从未见过该错误,也无法重现它,但看起来测试工件尚未经过publishLocal编辑,因为它们不是默认的。

根据选择默认工件

默认情况下,发布的工件是主要的二进制 jar、包含主要源代码和资源的 jar 以及包含 API 文档的 jar。您可以为测试类、源或 API 添加工件,也可以禁用一些主要工件。

添加所有测试工件:

publishArtifact in Test := true
Run Code Online (Sandbox Code Playgroud)

这就是您应该做的来发布配置的工件test

将以下内容添加到build.sbt项目common并将publishLocal测试打包并发布到本地 Ivy2 存储库:

publishArtifact in Test := true
Run Code Online (Sandbox Code Playgroud)

通过更改,您应该在日志中看到以下内容publishLocal- 请注意与测试相关的工件:

> common/publishLocal
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1-sources.jar ...
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1-tests-sources.jar ...
[info] Done packaging.
[info] Done packaging.
[info] Updating {file:/Users/jacek/sandbox/multi-module-test-scope-25003683/}common...
[info] Wrote /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] :: delivering :: org#common_2.10;0.1 :: 0.1 :: release :: Mon Jul 28 23:00:41 CEST 2014
[info]  delivering ivy file to /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/ivy-0.1.xml
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1-javadoc.jar ...
[info] Done packaging.
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1.jar ...
[info] Done packaging.
[info] Test Scala API documentation to /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/test-api...
[info] Compiling 1 Scala source to /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/test-classes...
model contains 2 documentable templates
[info] Test Scala API documentation successful.
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1-tests-javadoc.jar ...
[info] Done packaging.
[info] Packaging /Users/jacek/sandbox/multi-module-test-scope-25003683/common/target/scala-2.10/common_2.10-0.1-tests.jar ...
[info] Done packaging.
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/docs/common_2.10-javadoc.jar
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/srcs/common_2.10-tests-sources.jar
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/jars/common_2.10-tests.jar
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/jars/common_2.10.jar
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/srcs/common_2.10-sources.jar
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/poms/common_2.10.pom
[info]  published common_2.10 to /Users/jacek/.ivy2/local/org/common_2.10/0.1/docs/common_2.10-tests-javadoc.jar
[info]  published ivy to /Users/jacek/.ivy2/local/org/common_2.10/0.1/ivys/ivy.xml
[success] Total time: 2 s, completed Jul 28, 2014 11:00:43 PM
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,我已经设置了这个选项 `publishArtifact in Test := true` 但它不会改变任何东西。另请注意,我不需要“common”的测试类 - 我只需要类路径具有其依赖项。Artifact 也肯定会发布。 (2认同)