如何在SBT中解析自己的测试工件?

Ste*_*ski 10 scala sbt

我的一个项目将提供一个jar包,应该用于其他几个项目的单元测试.到目前为止,我设法让sbt生成objects-commons_2.10-0.1-SNAPSHOT-test.jar并在我的存储库中发布它.

但是,我找不到告诉sbt在其他项目中将该工件与测试范围一起使用的方法.

在我的build.scala中添加以下依赖项将不会加载测试工件.

"com.company" %% "objects-commons" % "0.1-SNAPSHOT",
"com.company" %% "objects-commons" % "0.1-SNAPSHOT-test" % "test",
Run Code Online (Sandbox Code Playgroud)

我需要的是使用默认的.jar文件作为编译和运行时依赖项,使用-test.jar作为我的测试范围中的依赖项.但不知何故,sbt从未试图解决测试jar.

Sch*_*rdt 17

如何使用测试工件

要在发布主工件时启用发布测试工件,您需要添加到库的build.sbt:

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

发布你的工件.至少应该有两个JAR:objects-commons_2.10.jar和objects-commons_2.10-test.jar.

要在运行时使用库并在测试范围内使用测试库,请将以下行添加到主应用程序的build.sbt:

libraryDependencies ++= Seq("com.company" % "objects-commons_2.10" % "0.1-SNAPSHOT"
    , "com.company" % "objects-commons_2.10" % "0.1-SNAPSHOT" % "test" classifier "tests" //for SBT 12: classifier test (not tests with s)
)
Run Code Online (Sandbox Code Playgroud)

第一个条目加载运行时库,第二个条目强制"tests"工件仅在测试范围内可用.

我创建了一个示例项目:

git clone git@github.com:schleichardt/stackoverflow-answers.git --branch so15290881-how-do-i-resolve-my-own-test-artifacts-in-sbt
Run Code Online (Sandbox Code Playgroud)

或者您可以直接在github中查看示例.