sbt - TeamCity 无法解析来自 Nexus 的测试工件,出现 "configuration not public"错误

标签 sbt

这类似于 sbt gives "configuration not public" for depending on test in subproject但我们没有外部 Ivy 文件。我们有

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))

依赖项取 self 们的 Nexus 存储库,按照 http://www.scala-sbt.org/0.13/docs/Proxy-Repositories.html 中的描述设置.这适用于开发人员的构建,但在同一台机器上运行的 TeamCity 会产生错误:

[warn] :: com.huawei.scalan#core_2.10;0.1-SNAPSHOT: configuration not public in com.huawei.scalan#core_2.10;0.1-SNAPSHOT: 'test'. It was required from com.huawei.scalan#enterprise-edition_2.10;0.2-SNAPSHOT test

它肯定会访问正确的存储库,因为它可以毫无问题地检索compile 配置。 SBT 版本为 0.13.5。在写这道题的过程中我找到了一个workaround:write dependency as

lazy val core = "com.huawei.scalan" %% "core" % "0.1-SNAPSHOT"

...
  settings(libraryDependencies ++= Seq(core, core % "test" classifier "tests"))

所以问题更多的是为什么以前的配置对 TeamCity 不起作用,而在使用 publishLocal确实起作用。

最佳答案

sbt issue似乎解释了它:如果同一版本已从公共(public) Maven 存储库中解析出来,这将是尝试获取测试依赖项的结果。

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

关于sbt - TeamCity 无法解析来自 Nexus 的测试工件,出现 "configuration not public"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235997/

相关文章:

scala - 如何在 Play Framework 项目中拆分 build.sbt?

java - Play 后出现编译错误!框架新应用指南

git - 哪些 sbt 插件可用于频繁(每天多次)从 git 发布项目?

scala - 如何并行运行多个 sbt 项目?

scala - SBT 任务将 debian 文件复制到其他文件夹

scala - 如何在taskKey中使用第三方库?

java - DataStax Cassandra 找不到 Logback-Classic

scala - sbt 在动态任务中设置 java 选项

java - Scala SBT 失败 - 加载 CharSequence 时出错(Scala 2.12.1,SBT 0.13.13)