sbt 给出“配置不公开”,取决于子项目中的测试

2024-04-29

我有一个 sbt 多项目构建,在本地运行良好。它使用外部 ivy 设置文件,在我的机器上,我将 sbt 项目间解析器添加到我的 ivy 设置文件中。然而,当我在 Jenkins 上构建时,我想构建每个子项目分别,这样我就可以独立发布每个子项目了。因此,在 Jenkins 服务器上,我没有在 ivy 设置文件中包含项目间解析器。

问题是,我的主要子项目配置在project/Build.scala with:

dependsOn(common % "test -> test; compile -> compile") aggregate(common)

我得到以下异常:

sbt.ResolveException: unresolved dependency: com.company.team#foo-common_2.10;0.1: configuration not public in com.company.team#foo-common_2.10;0.1: 'test'. It was required from com.company.team#foo_2.10;0.2 test
at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:213)
at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:122)
at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:121)
at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:116)
at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:116)
at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:104)
at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:51)
at sbt.IvySbt$$anon$3.call(Ivy.scala:60)
at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:98)
at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:81)
at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:102)
at xsbt.boot.Using$.withResource(Using.scala:11)
at xsbt.boot.Using$.apply(Using.scala:10)
at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
at xsbt.boot.Locks$.apply0(Locks.scala:31)
at xsbt.boot.Locks$.apply(Locks.scala:28)
at sbt.IvySbt.withDefaultLogger(Ivy.scala:60)
at sbt.IvySbt.withIvy(Ivy.scala:101)
at sbt.IvySbt.withIvy(Ivy.scala:97)
at sbt.IvySbt$Module.withModule(Ivy.scala:116)
at sbt.IvyActions$.update(IvyActions.scala:121)
at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1144)
at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1142)
at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1165)
at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1163)
at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:35)
at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1167)
at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1162)
at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:45)
at sbt.Classpaths$.cachedUpdate(Defaults.scala:1170)
at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1135)
at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1113)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)

是否有可能拥有一个适用于这两种情况的构建文件?


您是否开启了测试发布?

测试中的publishArtifact := true

see http://www.scala-sbt.org/0.12.2/docs/Detailed-Topics/Artifacts.html http://www.scala-sbt.org/0.12.2/docs/Detailed-Topics/Artifacts.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sbt 给出“配置不公开”,取决于子项目中的测试 的相关文章

  • SBT 未解决 Squeryl 依赖关系

    我最近开始了一个新项目 Play 框架和Scala 我习惯于使用 Squeryl 进行 ORM 但由于某种原因 这次它无法解决我的依赖关系 尽管它会解决其他问题 只是不能解决 squeryl 问题 我所做的唯一不同的是 我使用的计算机与以前
  • 使用SBT构建纯Java项目

    过去我曾使用 Ant Ivy 或 Maven 来构建我的 Java 项目 我现在正在寻找非基于 xml 的解决方案 Gradle 可以编译 jar 和发布我的项目 几乎没有问题 我可以用 SBT 做同样的事情吗 如果是这样 您能否提供一个使
  • sbt:没有找到 Append.Value[Seq[java.io.File], sbt.Def.Initialize[java.io.File]] 的隐式,

    我将 sbt 升级为sbt 0 13 16 to sbt 1 2 8我的以下代码被破坏了 lazy val gruntDirectory baseDirectory public unmanagedResourceDirectories i
  • 如何防止Scala编译时出现java.lang.OutOfMemoryError: PermGen space?

    我注意到我的 scala 编译器有一个奇怪的行为 编译类时偶尔会抛出 OutOfMemoryError 这是错误消息 info Compiling 1 Scala source to Users gruetter Workspaces sc
  • 使用自定义配置在调试模式下运行 sbt 项目

    我想使用特殊配置在我的 sbt 0 11 项目中引入调试模式 我尝试使用以下代码来实现这一点 但不幸的是 它似乎没有按预期工作 我正在启动debug run但运行并未按预期暂停 object Test extends Build lazy
  • Apache Ivy 可以处理 p2 存储库中的依赖关系吗?

    我考虑使用 SBT 它使用 Ivy 解决依赖关系 来构建 Eclipse RCP 应用程序 是否可以 如果您可以通过标准ivy解析器访问p2存储库 此处列出 http ant apache org ivy history latest mi
  • 如何将tools.jar添加为sbt中的“动态依赖项”。是否可以?

    我需要在我的项目中使用tools jar 但是将其打包在jar中没有多大意义 因为用户已经拥有它 那么 是否可以将其用作 动态依赖项 意思是 我希望我的代码compile通过使用tools jar文件发现于my JAVA HOME 但我不希
  • 如何使用 SBT 使用 build.scala 中的 -D 变量?

    我有一个 build scala 文件 它的依赖项如下所示 com example core 2 0 classifier full unstable 这会拉入一个带有完全不稳定分类器的 JAR 我需要做的是从 Jenkins 构建服务器
  • 如何测试 sbt 解析器

    在我的本地计算机上 我有一个常春藤缓存 该缓存已通过处理多个项目而被填充 图书馆X使用解析器加载Y在项目中A 同一个图书馆X项目中使用的B 解析这个库没有问题 因为它在我的本地缓存中 当我的一位同事加载项目时B他得到了图书馆的错误X无法解决
  • 如何在我的开发环境中管理多个版本的 Scala 和 SBT?

    我刚刚完成了很棒的 Coursera Scala 课程 并渴望通过探索一些现有的开源项目来继续了解有关 Scala 的更多信息 不过 我在尝试让其中一些在本地运行时遇到了障碍 我有 Ruby 背景 我们使用诸如rvm or rbenv在一个
  • 如何防止gitlab ci每次都下载sbt?

    我们有一个play2 scala我们正在使用 gitlab ci 构建的应用程序 Our gitlab ci yml 至少重要部分 如下所示 image hseeberger scala sbt variables SBT GLOBAL B
  • 如何设置 SBT 构建以在 Jenkins 测试失败时返回零退出代码?

    当我通过 SBT 在 Jenkins 中运行 Specs2 测试时 一旦一个测试失败 构建就会被标记为失败 由于 Jenkins 通常会区分构建失败和测试失败 所以我想改变这一点 我知道 Jenkins 中的构建失败是通过调用 SBT 的退
  • SBT 中的 :、:: 和 / 有什么区别?

    我试图回忆是否是test compile test compile or test compile当我在 SBT 上做一些事情时 我突然意识到 虽然我对使用哪个分隔符做什么有一些直觉 但我对每个分隔符的用途并不清楚 因此 当在 sbt 控制
  • 如何将 sbteclipse 插件添加到 SBT 0.10.x

    我想查看akka的源代码 似乎使用的是0 7 x版本的sbt 我将项目配置转换为0 10 x版本 当我在库依赖项中添加 sbteclipse 并运行 eclipse create src 生成 eclipse 项目时 它告诉 eclipse
  • 无法从 JAR 文件加载主类

    我有一个 Spark scala 应用程序 我尝试显示一条简单的消息 Hello my App 当我编译它时sbt compile并运行它sbt run没关系 我成功显示了我的消息 但他显示了错误 像这样 Hello my applicat
  • Akka Testkit 错误且版本不明确

    我正在使用 Akka testkit 库来测试我的一些演员 这是我的 build sbt 中的内容 com typesafe akka akka testkit 2 6 10 Test 这是我得到的错误 java lang IllegalS
  • SBT - 运行任务来设置SettingKey

    所以我的一般问题是我想根据任务的结果设置版本密钥 但是版本密钥是在任务运行之前设置的 据我了解 一旦设置了键的值 我就无法更改它 因此我无法在我的任务中更改它 我想要做的是将任务作为发布任务的依赖项运行并更改版本的值 我觉得一定有办法做到这
  • 用于多个项目构建的多个设置 gradle 文件

    我有以下项目结构 gt Starnderd Location gt Project1 gt settings gradle gt build gradle gt Subproject11 gt build gradle gt Subproj
  • 如何在 sbt 控制台中加载 scala 文件? [复制]

    这个问题在这里已经有答案了 可能的重复 将 Scala 文件加载到解释器中以使用函数 https stackoverflow com questions 7383436 load scala file into interpreter to
  • 获取SettingKey[T]的值

    我正在开发一个用于文档生成的插件 我想将所有生成的文件输出到我选择的目录中 该目录可以是SBT的子目录target目录 如下 val newTargetDirectory SettingKey File document target di

随机推荐