sbt中的向后设置allowInsecureProtocol

问题描述

我正在尝试为publishTo创建一个全局设置。我的问题是我们的存储库仅配置为http而不是https。

从sbt 1.3开始,我需要在设置中添加allowInsecureProtocol,但是由于这不是sbt 1.2 API的一部分,因此我无法在1.2和1.3中使用该设置,这会破坏任何尚未迁移到的项目1.3。

可以有条件地配置它。例如.sbt / 1.2 / global.sbt和.sbt / 1.3 / global.sbt。

解决方法

可能不推荐,但我设法通过反思来破解。

 val hacked = try {

    classOf[MavenRepository]
      .getMethod("withAllowInsecureProtocol",classOf[Boolean])
      .invoke(repo,true.asInstanceOf[AnyRef])
      .asInstanceOf[MavenRepository]

  } catch { case _: java.lang.NoSuchMethodException => repo }