sbt 任务类路径

2024-01-07

我正在处理 sbt 任务,我希望能够访问一些应用程序类和依赖项。 (具体来说,我想使用 scalaquery 生成数据库 DDL)

有什么方法可以将这些依赖项添加到任务中,或者我可能需要为此创建一个插件?

object ApplicationBuild extends Build {

  val appName = "test"
  val appVersion = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    "org.scalaquery" % "scalaquery_2.9.0-1" % "0.9.5")

  val ddl = TaskKey[Unit]("ddl", "Generates the ddl in the evolutions folder")

  val ddlTask = ddl <<= (baseDirectory, fullClasspath in Runtime) map { (bs, cp) =>
    val f = bs / "conf/evolutions/default" 

    // Figures out the last sql number used
    def nextFileNumber = { ... }

    //writes to file
    def printToFile(f: java.io.File)(op: java.io.PrintWriter => Unit) { ...}

    def createDdl = {
      import org.scalaquery.session._
      import org.scalaquery.ql._
      import org.scalaquery.ql.TypeMapper._

      import org.scalaquery.ql.extended.H2Driver.Implicit._
      import org.scalaquery.ql.extended.{ ExtendedTable => Table }
      import models._
      printToFile(new java.io.File(nextFileNumber, f))(p => {
          models.Table.ddl.createStatements.foreach(p.println)
      });
    }
    createDdl
    None
  }

  val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
    ddlTask)

}

我得到的错误是

[test] $ reload
[info] Loading global plugins from /home/asal/.sbt/plugins
[info] Loading project definition from /home/asal/myapps/test/project
[error] /home/asal/myapps/test/project/Build.scala:36: object scalaquery is not a member of package org
[error]       import org.scalaquery.session._
[error]                  ^
[error] one error found

提前致谢


您必须添加 ScalaQuery 以及您的构建所依赖的所有其他内容作为构建依赖项。这意味着基本上,您必须将其添加为“作为 sbt 插件”。

这在使用插件 https://github.com/harrah/xsbt/wiki/Getting-Started-Using-Pluginssbt wiki 的部分。不过,这一切都归结为一件非常简单的事情 - 只需在下面添加一行定义您的依赖项project/plugins.sbt像这样:

libraryDependencies += "org.scalaquery" % "scalaquery_2.9.0-1" % "0.9.5"

现在,在构建中使用应用程序类的问题是您无法真正将构建产品添加为构建依赖项。 - 因此,您可能必须创建一个单独的项目来构建 DDL 模块,并将其作为依赖项添加到该项目的构建中。

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

sbt 任务类路径 的相关文章

随机推荐

  • Bash 中的正则表达式:不想包含目录

    我有一个图像列表 使用以下行收集 find mindepth 1 type f name JPG grep MG 0 9 0 9 0 9 0 9 JPG output DCIM 103canon IMG 0039 JPG DCIM 103c
  • R.styleable无法解析

    海朋友 我的java文件表明这个错误 R styleable 无法解析 我的 xml 文件
  • 在 PHP 中使用用户输入的变量设置文件名

    我只是想知道如何使用变量的名称在 PHP 中设置文件名 当我运行以下代码时
  • Xamarin.iOS 上的 SignalR - 随机无法调用 Hub 方法

    我有一个简单的Hub在 Azure 中运行 我可以通过 Windows 中的控制台应用程序完美地工作 我刚刚构建了一个简单的测试 Xamarin iOS 应用程序 它给出了一些奇怪的行为 随机在 LTE Wifi 或模拟器 设备上 调用集线
  • 在 Windows 上使用域用户使用 Ansible

    我开始学习 Ansible 但文档并没有太大帮助 我已经在 RHEL 上安装了控制机并创建了必要的hosts文件和窗口 yml 但是 当尝试连接到远程 Windows 服务器以取回 pong 时 我收到以下错误 root myd666 an
  • 如何保存Django ModelFormSet?

    我现在很绝望 我无法弄清楚这一点 对我来说 这应该很容易做到 但我还没有找到任何解释这一点的答案 两个模型之间没有外键 class Employee models Model surname models CharField max len
  • BufferedReader 的错误使用

    s new Scanner new BufferedReader new InputStreamReader this clientSocket getInputStream while s hasNext System out print
  • Symfony2 Doctrine 无法识别的字段:

    我创建了一个实体来存储我通过 api 提取的一些数据 当我尝试 findByOne 查看该条目是否已存在时 我收到一条错误消息 指出该字段无法识别 我已经完成了 php 应用程序 控制台学说 schema update force 我可以在
  • Java检查字符串是否回文的方法[重复]

    这个问题在这里已经有答案了 我想检查一个字符串是否是回文 我想学习一种简单的方法来使用最少可能的字符串操作来检查相同的内容 Using reverse是多余的 因为您不需要生成额外的字符串 您只需要查询现有的字符串 以下示例检查第一个和最后
  • 组合列表和字典理解

    我有某种冗长的逻辑 我想用一些理解来压缩 本质上 我有一个正在读取的 dict 对象 其中有 16 个我关心的值 我通过以下理解获得了我想要的密钥 I d i for i in range 16 源字典看起来像这样 I0 0 1 5 2 I
  • .NET MVC Fire and Forget Method 也立即返回 View

    我正在寻找 Fire Forget 方法的最佳解决方案 并立即返回 View 据我所知 我是否设置了 Action 的返回类型Task
  • 将文本文件加载到 RichTextBox 的最快方法是什么?

    我使用 OpenFIleDialog 将文本文件加载到 RichTextBox 中 但是 当大量文本 例如大约 50 70 行的歌曲文本 并且我单击 打开 时 程序会挂起几秒钟 3 5 秒 正常吗 也许有一些更快的方法或组件来加载文本文件
  • 如何在bootstrap中设置datetimepicker的MinDate和maxDate属性

    我想在引导程序中为 datetimepicker 动态设置 minDate 和 maxDate 属性 请帮我解决这个问题 在这种情况下 在一个日期时间选择器中选择日期时 应将该选定日期设置为其他日期时间选择器的 minDate 在第二个日期
  • 分离的 pthread 和内存泄漏

    有人可以向我解释一下为什么这个简单的代码会泄漏内存吗 我相信 由于 pthread 是在分离状态下创建的 因此它们的资源应该在终止后立即释放 但事实并非如此 我的环境是Qt5 2 include
  • Visual Studio 2017 错误无法打开“X”进行写入 - 对路径的访问被拒绝

    抱歉 我似乎无法修复此错误 严重性代码 说明 项目文件行抑制状态 错误 CS2012 无法打开 C Users Usuario source repos WindowsFormsApp1 WindowsFormsApp1 obj Debug
  • docker本地注册表“exec:\”htpasswd \“:在$ PATH中找不到可执行文件”

    直到最近这还工作得很好 docker run entrypoint htpasswd registry 2 Bbn myuser mypwd gt my registry2 reg hub auth htpasswd 现在它出错了 dock
  • 从结果集中创建长字符串

    我在存储过程中的 MS SQL 中有一个结果集 假设它有一个 VARCHAR 列 但有许多行 我想创建一个包含所有这些值的逗号分隔字符串 有没有一种简单的方法可以做到这一点 或者我是否必须逐步遍历每个结果并手动构建字符串 最好我想在存储过程
  • 访问不同端口中的 spring security,以字符串“anonymousUser”形式获取主要数据

    我有一个应用程序在我的本地 8100 中运行 我的服务器端代码在它已实现的 8065 中执行Spring Security作为 Java 配置 当我从 8100 ionic 浏览器窗口输入登录服务器代码时 我得到的原则对象数据只有字符串作为
  • 您的 Ruby 版本是 2.3.0,但您的 Gemfile 指定为 2.1.2

    我正在尝试设置一个现有项目 跑步时bundle install 我收到以下错误 我已经尝试了许多可能的解决方案 但对我不起作用 我也运行了建议的命令 例如gem pristine bcrypt version 3 1 10但对我不起作用 b
  • sbt 任务类路径

    我正在处理 sbt 任务 我希望能够访问一些应用程序类和依赖项 具体来说 我想使用 scalaquery 生成数据库 DDL 有什么方法可以将这些依赖项添加到任务中 或者我可能需要为此创建一个插件 object ApplicationBui