【问题标题】:SBT: how to include both ordinary jar and test-jar of same dependencySBT:如何同时包含具有相同依赖项的普通 jar 和 test-jar
【发布时间】:2013-12-07 22:19:16
【问题描述】:

在我的 SBT 描述符中,我有:

libraryDependencies ++= Seq(
  "org.neo4j" % "neo4j-kernel" % neo4jVersion,
  "org.neo4j" % "neo4j-kernel" % neo4jVersion % "test" classifier "tests" // test-jar
)

通过此设置,我没有得到 test-jar 依赖项(第二行)。但是,如果我删除第一行,那么 test-jar 依赖就到位了。

如何同时包含这两个依赖项?

【问题讨论】:

  • 我怀疑诀窍在于您如何在项目定义的其他地方实际依赖库。你能补充更多信息吗?另见scala-sbt.org/release/docs/Getting-Started/…
  • 我只是像往常一样使用++= 运算符将这两个部门添加到libraryDependencies。但是,第一个(未经测试)“阴影”第二个,与它们出现的顺序无关。我认为它们应该以某种方式合二为一。
  • 我仍然认为libraryDependencies 代码的更多上下文可能会说明问题。例如类似于libraryDependencies ++= Seq(...),其中... 在项目之间有逗号?
  • 这个"org.neo4j" % "neo4j-kernel" % neo4jVersion % "compile,test" classifier "tests" 可以工作,但可以在生产代码中使用测试类。
  • 我相信这是this bug

标签: scala maven sbt


【解决方案1】:

您是否要让 test-jar 可用于您的主要(“编译”)代码?还是为了你的测试代码?

根据 http://www.scala-sbt.org/release/docs/Detailed-Topics/Library-Management.html#ivy-configurations ,如果您尝试获取其他可用于您的主代码的测试配置,您将需要类似 % "compile->test" 的东西(my 'compile' 使用他们的“测试”)。

例如如果你想要两者都在 main 中,

"org.neo4j" % "neo4j-kernel" % neo4jVersion
"org.neo4j" % "neo4j-kernel" % neo4jVersion classifier "tests" % "compile->test"

或者如果您只是希望后者在测试中,尝试改组 classifier% "test" 的顺序可能吗?

"org.neo4j" % "neo4j-kernel" % neo4jVersion
"org.neo4j" % "neo4j-kernel" % neo4jVersion classifier "tests" % "test"

粘贴 show compile:dependencyClasspathshow test:dependencyClasspath(在 sbt 提示符处)

【讨论】:

  • 我需要将 Neo4j 内核依赖添加到“编译”范围,并将其 test-jar 版本添加到“测试”范围。您提出的(打乱顺序)无法编译。
  • hmpf。这很奇怪,我假设“说出你想要的”(包括分类器)可以通过“说出你想要的地方”来修改。
猜你喜欢
  • 2014-05-29
  • 2015-12-27
  • 2011-12-25
  • 1970-01-01
  • 2011-07-26
  • 2017-06-09
  • 2017-04-28
  • 1970-01-01
  • 2016-03-05
相关资源
最近更新 更多