TeamCity无法解决来自Nexus的测试工件,其中"配置不公开"错误

时间:2014-10-07 12:27:38

标签: sbt

这与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时起作用。

1 个答案:

答案 0 :(得分:1)

这个sbt issue似乎解释了这一点:如果从公共Maven存储库中解析出相同的版本,这将是尝试获得测试依赖的结果。

解决方法是使用git SHA版本控制或SNAPSHOT用于非最终版本。