【问题标题】:externalIvySettingsURL with SBT 1.0.4 Play Framework带有 SBT 1.0.4 播放框架的 externalIvySettingsURL
【发布时间】:2018-06-13 08:46:18
【问题描述】:

在我的构建环境中,我们管理自己的 ivy 存储库。在我的build.sbt 文件中,我使用externalIvySettingsURL 来定义依赖项的位置。

我能够在我的项目目录中成功运行sbt,并且 sbt 似乎找到了与项目相关的所有依赖项(例如:sbt 将正确创建和填充 .sbt 和 .ivy2 文件夹)。当我尝试运行 sbt compile 时,我得到以下堆栈跟踪:

[info] Compiling 7 Scala sources and 21 Java sources to C:\Users\ian.gabriel\workspace\Utils\play\target\scala-2.12\classes ...
:: loading settings :: file = L:\Libs\ivySettings\ivysettings.xml
[info] Attempting to fetch org.scala-sbt:compiler-bridge_2.12:1.0.5.
[error] ## Exception when compiling 28 sources to C:\Users\ian.gabriel\workspace\Utils\play\target\scala-2.12\classes
[error] For input string: "null"
[error] scala.collection.immutable.StringLike.parseBoolean(StringLike.scala:327)
[error] scala.collection.immutable.StringLike.toBoolean(StringLike.scala:286)
[error] scala.collection.immutable.StringLike.toBoolean$(StringLike.scala:286)
[error] scala.collection.immutable.StringOps.toBoolean(StringOps.scala:29)
[error] sbt.internal.librarymanagement.IvyActions$.retrieve(IvyActions.scala:385)
[error] sbt.internal.librarymanagement.IvyActions$.$anonfun$updateEither$6(IvyActions.scala:213)

我发现了一个相关的 github 问题,似乎很接近,但应该已将其纳入我当前使用的 SBT 版本:https://github.com/sbt/librarymanagement/issues/110

github 问题指向 sbt.internal.librarymanagement 代码的不同部分,而不是我目前遇到的问题。

从我的build.sbt文件中删除externalIvySettingsURL设置后,编译过程按预期执行(对于找不到的符号抛出一堆编译错误,这是正常的)

[info] Compiling 7 Scala sources and 21 Java sources to C:\Users\ian.gabriel\workspace\Utils\play\target\scala-2.12\classes ...
[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.4. Compiling...
[info]   Compilation completed in 9.776s.

当我使用externalIvySettingsURL 时,SBT 似乎没有尝试编译编译器桥模块。编译此模块后在 sbt 控制台中运行 compile 似乎可以正常工作。我有其他开发者会在第一次编译 play 项目时遇到这个问题,或者当他们的 ~/.sbt 文件夹被删除时。

这是我应该报告的 SBT 中的错误,还是我做错了什么?

提前致谢!

【问题讨论】:

    标签: playframework sbt playframework-2.0 ivy


    【解决方案1】:

    据我所知,这原来是 SBT 中的一个错误。我在他们的github上发了一个issue:

    https://github.com/sbt/librarymanagement/issues/195

    我对这个问题的解决方法是添加

    <property name="sbt.managedChecksums" value="False"/>

    到我的 ivySettings.xml,它停止抛出异常。如果不存在,我不确定该键的默认值应该是什么,我也没有时间完全阅读 SBT 代码来弄清楚该设置的用途。这确实设法修复了我的构建,但它可能会产生我不知道的其他副作用。祝你好运!

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 2015-02-19
      • 2013-09-14
      • 2021-10-22
      • 2012-06-04
      • 2013-03-22
      • 1970-01-01
      • 2018-02-08
      • 2023-03-20
      相关资源
      最近更新 更多