使用 SBT,如何指定除当前目录之外的备用项目根目录来运行主类?

2023-12-02

通常,SBT 会在以下位置查找构建文件:./build.sbt and ./project/Build.scala。是否可以指定备用项目根目录,以便我可以构建不在当前工作目录中的项目?我本质上正在寻找相当于mvn -f /path/to/pom.xml但文档没有为我提供任何明显的答案。

(我应该注意,我想在运行时而不是编译时执行此操作。本质上,我想使用sbt run-main从我的项目中运行任意类,因为我hate手动类路径争论。由于各种无聊的原因,我可能需要从任意位置执行此操作,因为代码可能需要工作目录是项目目录之外的目录,因此使用cd可能不会做我想做的事。这在 Maven 中是如此微不足道——我只是假设,也许不公平,SBT 中会有一个简单的等价物)


我有这样的东西。我的项目定义位于X/build.sbt, X/MyOtherDefinitionWithSpecialThing/build.sbt, X/MySuperPublishConfig/build.sbt.

但我对这个问题的看法是相反的。而不是指定位置./build.sbt and ./project/Build.scala我指定资源路径的位置。结果是一样的。看起来像:

sourceDirectory <<= (baseDirectory) (_ / ".." / "src")

target <<= (baseDirectory) (_ / ".." / "target")

这允许创建具有多个定义的单个项目。这适用于嵌套/分层项目。但我对分层项目使用符号链接(Linux 操作系统)。

我的一个 SBT 插件有一个文件树。多个构建定义且只有一个src/...

.
|-build.sbt
|-project
|---project
|-----target
|-------...
|---target
|-----...
|-project-0.11
|---build.sbt
|---project
|-----project
|-------target
|---------...
|-----target
|-------...
|-project-0.12
|---build.sbt
|---project
|-----project
|-------target
|---------...
|-----target
|-------...
|-...
|-src
|---main
|-----scala
|-------org
|---------...
|---sbt-test
|-----...
|-target
|---...

如果这不能解决您的问题,请详细说明为什么您不想使用“cd”命令;-)

-- 对于更新后的用例:

我使用 shell 包装器,并且在每个 SBT 项目中都有指向此包装器的符号链接:

#!/bin/sh
#
here=$(cd $(dirname "$0"); pwd)
if [ ! -e "${here}/build.sbt" ]
then
  echo build.sbt lost
  exit
fi
cd ${here} 

LOCAL_BUILD=true sbt-0.12 "$@"

我简单地写/path/to/my/project/sbt 'show name'例如或/path/to/my/project/sbt run-main在你的情况下。

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

使用 SBT,如何指定除当前目录之外的备用项目根目录来运行主类? 的相关文章

  • 如何在 sbt 中检测 JavaFX 运行时 jar

    我想做的是定义javaHome一开始 要么来自环境变量 要么来自默认的固定字符串 然后 稍后 我会使用该字符串 这是我尝试过的 javaHome Some file Library Java JavaVirtualMachines jdk1
  • 如何测试 sbt 解析器

    在我的本地计算机上 我有一个常春藤缓存 该缓存已通过处理多个项目而被填充 图书馆X使用解析器加载Y在项目中A 同一个图书馆X项目中使用的B 解析这个库没有问题 因为它在我的本地缓存中 当我的一位同事加载项目时B他得到了图书馆的错误X无法解决
  • 在 SBT 中显示调试模式的时间戳?

    我的sbt更新很慢 我想看看详细情况 所以我有 sbt debug update gt sbtupdate log 问题是日志没有每一行的时间戳 如何启用它 据我所知 仅使用 SBT 选项是不可能的 然而这question https st
  • 如何设置 IntelliJ Idea Scala 项目来识别本地 Ivy2 缓存?

    您可能知道 新版本的 SBT 0 11 旨在维护公共库缓存 ivy2 cache而不是复制项目目录中的完整依赖项集 但是 IntelliJ Idea 我使用 SBT 插件生成 Idea 项目 默认似乎忽略了公共缓存 只看到放在项目目录下的库
  • 在Playframework2中,如何服务多个资源目录?

    asset目录有两个 一个是 ui dist另一个是 public 我尝试这样写路线 GET assets file controllers Assets at path public file GET ui file controller
  • 如何像普通命令行程序一样从 shell 运行 sbt 主类?

    如何从 shell 运行 sbt 应用程序 以便我可以将我的应用程序作为普通的命令行程序运行 就像直接通过scala但不必设置巨大的类路径 我知道我能做到 echo hello sbt run main com foo MyMain3 ar
  • 无法从 JAR 文件加载主类

    我有一个 Spark scala 应用程序 我尝试显示一条简单的消息 Hello my App 当我编译它时sbt compile并运行它sbt run没关系 我成功显示了我的消息 但他显示了错误 像这样 Hello my applicat
  • sbt 给出“配置不公开”,取决于子项目中的测试

    我有一个 sbt 多项目构建 在本地运行良好 它使用外部 ivy 设置文件 在我的机器上 我将 sbt 项目间解析器添加到我的 ivy 设置文件中 然而 当我在 Jenkins 上构建时 我想构建每个子项目分别 这样我就可以独立发布每个子项
  • Twitter API 与 Scala 2.12 一起使用

    我正在使用 Scala 2 12 使用 SBT 构建 构建 Spark 3 0 0 流应用程序 鉴于所有用于执行此操作的库均适用于 Scala EDIT 我尝试使用库构建时得到的示例输出 object twitter is not a me
  • 如何执行仅匹配正则表达式的测试?

    在 sbt 0 10 1 中 我经常使用test only缩小我的测试数量 sbt gt test only com example MySpec 但是 我想缩小范围 以便只运行名称 描述与正则表达式匹配的测试 是否有一些语法可以实现这样的
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • Scala SBT 版本依赖性二进制兼容性错误 scala-xml

    我有一个在 GitHub 上托管的项目 我使用 scala steward 来保持我的插件和依赖项最新 这在一段时间内有效 但现在使用此类自动更新却变成了一场噩梦 事情是这样的 在我的plugins sbt中 我依赖于scoverage 它
  • 如何列出所有 sbt 依赖项?

    我需要列出所有 sbt 依赖项 以便检查是否已存在 debian 软件包 我还注意到有一个 DEB 包 http www scala sbt org 0 13 tutorial Installing sbt on Linux html但似乎
  • 如何设置 jacoco4sbt 来处理 Play 中主模块和子模块中的类?

    我有一些问题要解决雅可可4sbt https github com sbt jacoco4sbt正在使用我的 Play 2 3 4 项目 我的项目由 3 个子模块组成 common api and frontend并且没有代码app根文件夹
  • 如何通过 SBT 项目依赖项将 sbt-web 输出与 xsbt-web-plugin 一起使用?

    我正在尝试在没有播放框架的情况下使用 sbt web 插件 而是使用 xsbt web plugin 构建一个 web 应用程序 我已经让 sbt web 插件在处理资产管道时正确工作 并让它创建有效的 webjar 输出 通过 packa
  • 如何强制依赖特定版本?

    依赖bar依赖于取决于foo1 2 3 但是那个版本foo有一个错误 我需要使用版本 1 2 2 我可以这样做force libraryDependencies foo foo 1 2 2 force 该方法不被推荐docs http ww
  • sbt 使用不同选项编译任务

    我有一个基本的 sbt 项目 我想用相同的源文件打包两个 jar 但使用不同的选项进行编译 因此 一个项目 2 个编译 但具有不同的选项 scalacOptions 和 2 个 jar 作为输出 我不想执行 sbt 两次 更改选项 有人有想
  • sbt 项目构建中的多个目标目录

    我有一个这样结构的 sbt 项目 build sbt project build properties plugins sbt src main java smcho App java test java smcho AppTest jav
  • Scala sbt 项目给出 NullPointerException?

    当我运行命令时sbt clean compile run在我的 sbt 项目中 它给出了空指针异常 这是控制台输出 info Loading project definition from home dnilesh workspace wi
  • META-INF/服务应该在 sbt 中的哪里

    META INF 目录应该放在哪里 以便 sbt 获取自定义配置 我在尝试使用 ServiceLoader 时遇到了这个问题 并且我试图在 META INF services 中创建自定义服务 如果您将 META INF 文件夹放在 src

随机推荐

  • 为什么 var_dump 可以确定私有变量的值,但在尝试访问单个属性时却不能

    我有一个对象被扔到会话数组中 我想运行 foreach 在 items 属性上 我似乎无法访问它 我看到它是私有的 但我忍不住想知道为什么 var dump 可以向我显示该属性包含的内容 但我无法读取数据 因为它会引发致命错误 我想如果我真
  • ruby on Rails 中的 Bootstrap 模式不起作用

    我正在尝试实现一个模式来为我的应用程序创建新用户 由于某种原因无法使其工作 这段代码只是淡入淡出 并且没有显示任何模式 我不明白为什么 事实上 我正在使用与此答案完全相同的代码如何使用 link to 添加引导模式 以便链接内容在模式中打开
  • 在 iOS 中将 PDF 文本写入 PDFContext

    通过以下方式绘制到 pdf 上下文非常简单 UIGraphicsBeginPDFContextToFile pdfFile CGRectZero nil UIGraphicsBeginPDFPageWithInfo sheet frame
  • UITableViewCell 内 UITableView 的动态行高度

    我有一个 主 UITableView 其中我使用从 xib 加载的不同单元格 其中一些单元格本身也有一个 UITableView 现在我已将每个单元格的行高设置为原始 xib 大小 但是 我希望高度动态并与 子 UITableView 中的
  • 尝试更新 MongoDb 数组元素时出错

    在我的 Azure CosmosDb MongoApi 中 我有带有嵌入文档数组的 JSON id ObjectId 5a95745df886842904b82f71 token value1 channel value2 urls url
  • 在 IF 语句中对数组使用 DelayedExpansion 索引变量失败

    我有一个批处理文件 其中显示目录中的所有 pem 文件 为用户提供选择一个文件的选项 此时只是尝试使用他们选择的数字来显示他们选择的文件 ECHO数组的内容 我相信不知何故 因为它位于 IF 语句内部 所以索引变量 selectedPem
  • Swift:#warning 等效项

    Swift 有类似的 warning 吗 它只是用于在 Xcode 自己的 GUI 中显示警告 我也对是否有 error 等效项感兴趣 苹果表示 pragma mark 即将推出 可能与此相同 Edit 从 Swift 4 2 开始 语言级
  • R:使用 IFELSE 替代方案创建数据框的最快方法

    我有一个类似的问题 这个问题在这个线程上 使用 R 将矩阵中 但就我而言 假设我有更大的数据集和可变阈值 我需要使用同一数据帧第一列上的值创建一个数据帧 其中包含从条件中检索的每个值 每条线的这些值都不同 这是数据框的示例 SNP A1 A
  • C# 将密钥发送到其他应用程序到特定文本字段

    我需要使用 C 将密钥发送到其他应用程序到其他应用程序中的特定文本字段 那可能吗 如果是 有人可以给我示例代码吗 SendKeys只将击键组合发送到活动窗口 因此 如果您的 C 应用程序调用SendKeys在正确的时间运行 当用户将其他应用
  • Javascript 中的 String 是原始类型还是对象?

    Javascript 中的 String 是原始类型还是对象 消息人士称 Undefined Null Boolean Number 和 String 都是 Javascript 中的原始类型 但它说 String 也是一个对象 我很困惑
  • Java:扩展类加载器从 Java 13 中的哪里获取类?

    我能找到的所有文档都提到了 jre lib ext 文件夹 但我的 JRE 13 安装中不存在该文件夹 我猜想在 Java 8 我可以在 jre lib ext 中看到 jar 和 Java 13 之间的某个地方 它们移动了 但我无法确定它
  • 批量替换文本文件中的文本(Linux/OSX 命令行)

    我有数百个文件 需要更改其部分文本 例如 我想将 http 的每个实例替换为 rtmp 这些文件具有 txt 扩展名 并且分布在多个文件夹和子文件夹中 我基本上正在寻找一种遍历每个文件夹 子文件夹和每个文件的方法 脚本 如果它在该文件中发现
  • 终止空闲的 mysql 连接

    我看到很多连接处于打开状态并且长时间处于空闲状态 例如 5 分钟 是否有任何解决方案可以在不重新启动 mysql 服务的情况下从服务器终止 关闭它 我正在维护旧版 PHP 系统 无法关闭为执行查询而建立的连接 我是否应该将 my cnf 文
  • UIImageView 动画RepeatCount 奇怪的行为

    所以我有这段代码可以无限次地对一组图像进行动画处理 但是一旦我尝试限制它的动画处理次数 它就不起作用了 甚至没有显示图像 有效的代码 animatedMap animationImages NSArray arrayWithObjects
  • 如何为图标内的文本着色

    我想问是否有一种方法可以为我将鼠标悬停在下面链接的图标上添加颜色 例如 如果我将鼠标悬停在文本上 如何才能仅将文本的颜色设置为 红色 我认为你必须结合照片编辑器来完成它 但我真的不知道如何做 感谢帮助 这是我尝试过的代码 section a
  • Mysql - 更新表中列具有空值的第一行

    我有一个包含 API 密钥列表的数据库 我需要将电子邮件和姓名与这些关联起来 我希望我的查询更新第一行中电子邮件为空的姓名和电子邮件 id key name email 1 3046GUGYi7ab NULL NULL 2 TXQzL33H
  • 在没有工具栏的新进程中启动 Internet Explorer 7

    我需要在 IE 中运行一个 Web 应用程序 因此它至少看起来与独立应用程序类似 我还需要能够在单独的会话中同时运行此 Web 应用程序的多个实例 为了实现这种外观 我希望始终在新进程中启动 Internet Explorer 7 而无需从
  • 使用 GCC 扩展 ASM 将内联 Intel ASM 转换为 AT&T ASM

    我花了 2 天的时间来研究 AT T 内联汇编 但是在转换这个汇编时遇到了一些问题 static char vendername 50 0 asm mov eax 0 cpuid mov dword ptr vendername ebx m
  • 如何使用 List 填充 DropDownList

    我有一个下拉列表 我需要用收集到的项目填充它List
  • 使用 SBT,如何指定除当前目录之外的备用项目根目录来运行主类?

    通常 SBT 会在以下位置查找构建文件 build sbt and project Build scala 是否可以指定备用项目根目录 以便我可以构建不在当前工作目录中的项目 我本质上正在寻找相当于mvn f path to pom xml