SBT解决了Nexus的测试工件问题。解决方法不是很有帮助

时间:2016-04-04 15:13:29

标签: scala sbt

我正在开发一个项目,我需要在我们的nexus存储库中添加一个作为依赖项的项目。我需要使用这个项目中的测试和主要类。

在我的build.sbt中,以下内容无法解析依赖关系,并显示测试配置不公开的消息

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test->test;test->compile" classifier "tests"

这很好用

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test" classifier "tests"

但是我还需要使用主源文件夹中没有以这种方式解析的类。我尝试"test;test->compile"虽然解决了依赖关系,但未获取主类。从XProj的一个测试类中调用一个方法,失败了java.lang.NoClassDefFoundError是否还有其他方法可以同时添加主类并解决依赖关系?

2 个答案:

答案 0 :(得分:0)

试试这个:

libraryDependencies ++= {
  val xproj = "XProj" %% "XProj" % "1.0-SNAPSHOT"
  Seq(
    xproj % "test" classifier "tests"
    xproj % "test->compile" classifier "tests"
  )
}

干杯

答案 1 :(得分:0)

在不了解您的依赖关系配置的情况下,我想您可能想要改变:

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "test" classifier "tests"

类似于:

libraryDependencies += "XProj" % "XProj_2.11" % "1.0-SNAPSHOT" % "default,test" classifier "tests"

其中default,test是您需要提取的配置的逗号分隔列表。

Ivy中的->指标通常用于指示模块的传递配置,即如果我写test->compile这意味着我的模块的test配置应该引入{ {1}}依赖项的配置。