【问题标题】:Collecting dependencies under sbt 0.10 (putting all dependency jars to target/scala-version/lib/)在 sbt 0.10 下收集依赖项(将所有依赖项 jar 放入 target/scala-version/lib/)
【发布时间】:2011-11-13 03:45:36
【问题描述】:

我正在使用 sbt 0.10 和 Scala 2.9.1。

我读过 http://groups.google.com/group/simple-build-tool/browse_thread/thread/792e5360877e78/987b6af687b8e33b?lnk=gst&q=collect+jars#987b6af687b8e33b

但是我不想要一个大罐子。我只想要依赖罐子 最终在 target/scala-2.9.1.final/lib 目录中。

我不想要一个大罐子的原因,那个项目使用了很多 libs,通常只有应用程序 .jar 更改。然而作为这 是多语言项目,并非所有团队成员都有 scala 或 sbt, jars 只是提交给 git。拥有一个巨大的 dar 更新规则 会扩大回购规模。

如何复制这些依赖项? ;)

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    您没有指定要从中复制配置的 ivy 配置,但这里有一个完整的示例,它将所有您的托管依赖项复制到 target/<scala version>/lib 文件夹(scala 版本由 crossTarget 给出任务)。只需复制此文件并将其放入文件project/Build.scala(或您想要的任何文件名):

    import sbt._
    import Keys._
    
    object MyBuild extends Build {
    
      lazy val copyDependencies = TaskKey[Unit]("copy-dependencies")
    
      def copyDepTask = copyDependencies <<= (update, crossTarget, scalaVersion) map {
        (updateReport, out, scalaVer) =>
        updateReport.allFiles foreach { srcPath =>
          val destPath = out / "lib" / srcPath.getName
          IO.copyFile(srcPath, destPath, preserveLastModified=true)
        }
      }
    
      lazy val root = Project(
        "root",
        file("."),
        settings = Defaults.defaultSettings ++ Seq(
          copyDepTask
        )
      )
    }
    
    

    如果你想要一个特定的配置,替换

    updateReport.allFiles by updateReport.select(configuration = Set("compile")) 或您想要的任何常春藤配置。

    【讨论】:

      【解决方案2】:

      各种“类路径”键包含类路径的不同视图,但可能最简单的方法是修改 sbt-assembly 插件,将 jar 放入目录中,而不是执行解压缩/重新压缩循环。该插件非常小(只有 150 行),粗略一瞥就能很明显地看出哪里是更改的正确位置。

      【讨论】:

        【解决方案3】:

        查看任务 xitrum-package: https://github.com/ngocdaothanh/xitrum/blob/master/plugin/src/main/scala/XitrumPlugin.scala

        它将所有依赖项复制到目录 target/xitrum_package。

        【讨论】:

          猜你喜欢
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-10
          • 2010-09-10
          • 2013-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多