这与sbt gives "configuration not public" for depending on test in subproject类似,但我们没有外部常春藤文件。我们有
lazy val core = "com.huawei.scalan" %% "core" % "0.1-SNAPSHOT" % "compile->compile;test->test"
lazy val enterprise = Project(
id = "enterprise-edition",
base = file(".")
).configs(ItTest).settings(commonSettings: _*).
settings(libraryDependencies ++= Seq(core))
依赖性来自我们的Nexus存储库,如http://www.scala-sbt.org/0.13/docs/Proxy-Repositories.html中所述进行设置。这适用于开发人员和#39;构建,但在同一台机器上运行的TeamCity会产生错误:
[warn] :: com.huawei.scalan #core_2.10; 0.1-SNAPSHOT:com.huawei.scalan中的配置不公开#core_2.10; 0.1-SNAPSHOT:' test'。它来自com.huawei.scalan #enterprise-edition_2.10; 0.2-SNAPSHOT测试
它肯定会访问正确的存储库,因为它可以毫无问题地检索compile
配置。 SBT版本为0.13.5。在编写这个问题的过程中,我找到了一种解决方法:将依赖写为
lazy val core = "com.huawei.scalan" %% "core" % "0.1-SNAPSHOT"
...
settings(libraryDependencies ++= Seq(core, core % "test" classifier "tests"))
所以问题更多的是为什么以前的配置对TeamCity不起作用, 在使用publishLocal
时起作用。
答案 0 :(得分:1)
这个sbt issue似乎解释了这一点:如果从公共Maven存储库中解析出相同的版本,这将是尝试获得测试依赖的结果。
解决方法是使用git SHA版本控制或SNAPSHOT用于非最终版本。