【问题标题】:How to download user-provided Scala version using SBT?如何使用 SBT 下载用户提供的 Scala 版本?
【发布时间】:2012-07-22 10:56:15
【问题描述】:

我正在尝试编写一个新类,同时扩展 Jan Berkel 的 Android 插件,我想使用它来提供将整个 scala 库推送到有根手机的功能。

到目前为止,我有使用本地版本 Scala 的代码,您已经下载到您的计算机上,但是,如果没有 Scala 版本,我希望能够下载它。

以下是相关部分代码:

def makePermission(version: String) {  
    val home = JSystem.getProperty("user.home")
    val scalaFolder = new JFile(home + "/.sbt/boot/scala-" + version)

    if (!scalaFolder.exists) {
        // TODO: Try to download the Scala version in "version"
    }

    val permission = new JFile(scalaFolder, "scala-library.xml")

    if (scalaFolder.exists && !permission.exists) {
        val writer = new PrintWriter(permission)
        writer.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
        writer.println("")
        writer.println("<permissions>")
        writer.println("    <library")
        writer.println("        name=\"scala-library-" + version + "\"")
        writer.println("        file=\"/system/framework/scala-library-" + version + "\"")
        writer.println("    />")
        writer.println("</permissions>")
        writer.close
    }
}

例如,像这样调用我的函数:
makePermission("2.9.1") 将看到我有 Scala 2.9.1 并在 scala-2.9.1 文件夹中创建 scala-library.xml。

这样做:
makePermission("2.8.1") 会看到我没有 Scala 2.8.1,下载它并在scala-2.8.1 文件夹中创建 scala-library.xml。

但是,这样做:
makePermission("3.0.0") 将看到我没有 Scala 3.0.0,尝试下载它但发现它不存在并跳过其余部分。

我对如何处理TODO 部分感到困惑,因此我们不胜感激。 :D

【问题讨论】:

    标签: scala dependencies version sbt sbt-android-plugin


    【解决方案1】:

    我正在尝试编写一个新类,同时扩展 Jan Berkel 的 Android 插件

    这听起来像 sbt 0.7,但我们假设您使用的是 sbt 0.12。 您可以依靠 sbt 本身来获取任何已发布的 Scala 版本,方法是:

    > ++2.10.2
    

    然后您可以通过查看fullClasspath in Runtime 来获取 scala-library.jar。从外壳来看,它是:

    > show runtime:full-classpath
    [info] List(Attributed(~/foo/app/target/scala-2.9.2/classes), Attributed(~/foo/library/target/scala-2.9.2/classes), Attributed(/~/foo/.sbt/0.12.0/boot/scala-2.9.2/lib/scala-library.jar))
    

    创建一个依赖于fullClasspath in Runtime 的任务,并在其中提取 scala-library.jar 的完整路径。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2020-11-08
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2012-07-30
      • 2016-08-22
      相关资源
      最近更新 更多