带有 IntelliJ 和 SBT 的自定义文件夹结构的 Uber jar

2023-12-11

我对云还很陌生SBT/IntelliJ,所以试试我的运气IntelliJ & SBT构建环境以在 dataproc 集群上部署我的 jar。

这是我的项目结构的屏幕截图:

Project Structure

代码非常简单,main 定义在'mytestmain'它调用定义在中的另一个方法'ReadYamlConfiguration'这需要一个moultingyaml依赖项,我已将其包含在内,如我的build.sbt.

这是我的build.sbt & assembly.sbt file:

lazy val root = (project in file(".")).
  settings(
    name := "MyTestProjectNew",
    version := "0.0.1-SNAPSHOT",
    scalaVersion := "2.11.12",
    mainClass in Compile := Some("com.test.processing.jobs.mytestmain.scala")
  )

libraryDependencies ++= Seq(
  "net.jcazevedo" %% "moultingyaml" % "0.4.2"
)

scalaSource in Compile := baseDirectory.value / "src" 

assembly.sbt file:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")

我创建assembly.sbt创建 Uber jar 以包含所需的依赖项并运行'SBT assembly'从航站楼。它已成功创建程序集 jar 文件,我能够在 Dataproc 集群上成功部署并运行该文件。

gcloud dataproc jobs submit spark \
--cluster my-dataproc-cluster \
--region europe-north1 --class com.test.processing.jobs.mytestmain \
--jars gs://my-test-bucket/spark-jobs/MyTestProjectNew-assembly-0.0.1-SNAPSHOT.jar

代码按预期工作正常,没有任何问题。

现在我想要自己的自定义目录结构,如下所示:

例如,我想要一个文件夹名称为'spark-job'子目录名为'SparkDataProcessing'进而src/main/scala包含包以及相应的 scala 类和对象等的文件夹。

我的主要方法是在包中定义的'job' within 'com.test.processing'包裹。

我需要做出哪些改变build.sbt?我正在寻找详细的解释build.sbt作为根据我的项目结构的示例。另请建议所有需要包含的内容gitignore file.

我在用IntelliJ Idea 2020 community edition and SBT 1.3.3版本。我在这里和那里尝试了一些东西,但总是以结构、罐子或build.sbt问题。 我期待一个类似的答案,在下面的帖子中完成。

为什么我的 sourceDirectories 设置在 sbt 中没有效果?

如下图所示,源目录已更改。

spark-jobs/SparkDataProcessing/src/main/Scala

当我用下面的路径构建它时,它不起作用。

scalaSource in Compile := baseDirectory.value / "src" 

当我保留默认结构时它会起作用。喜欢src/main/scala

Custom Project Structure


您还需要更改后面的包名称package受影响文件顶部的关键字。但是,如果您使用 IntelliJ 进行重构(通过创建包,然后使用 UI 将文件拖到包中),那么 IntelliJ 将为您执行此操作。

其他什么都不需要改变(build.sbt相关文件可以保持不变)。

最后,记得更改class反映入口点位置变化的参数;你会通过--class com.test.processing.jobs.job.mytestmain代替--class com.test.processing.jobs.mytestmain.

至于.gitignore:请看一下示例 gitignore 文件包括:

  • 包含“目标”的输出目录
  • IntelliJ 目录,例如“.idea”

另一个 gitignore 示例另一种方法是忽略编译器生成的所有 .class 文件。您应该包含动态生成的所有文件,其中的更改对其他开发人员来说并不重要。

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

带有 IntelliJ 和 SBT 的自定义文件夹结构的 Uber jar 的相关文章

随机推荐

  • 在ListView的ArrayAdapter中使用Linkify会导致RuntimeException

    我有一个TextView in my ArrayAdapter可能包含一些超链接 对于我使用的那些链接Linkify public View getView int position View convertView ViewGroup p
  • 无法在 Android Studio 中添加地图,如 Google“入门”页面所述; Android Studio 报错

    我正在尝试按照说明使用 Google 地图 API 制作应用程序 为此 我完全按照描述的说明进行操作here 我已经有了 Android Studio 并开发了几个非常基本的联系人列表应用程序 但为此我获得了 API 密钥 设置了位置和网络
  • 全文搜索 sql server 中输入错误的单词

    我们目前正在评估模糊搜索的一系列选项 我们的要求之一是匹配错误的单词 CRA1G 数字 1 的 OCR 必须与 CRAIG 匹配 sql server 中的全文搜索似乎很接近 但没有雪茄 除了 FORMSOF Inflectional CR
  • 如何在 php 中设置电子邮件正文的样式[重复]

    这个问题在这里已经有答案了 我想设计邮件正文的样式 我尝试过以下方法来设置邮件正文的样式 但所有这些都不起作用 1 使用外部样式表样式 css td padding 10px mail php table td td table 2 定义的
  • 左连接上的 CTE 性能缓慢

    我需要提供一份报告 显示表中的所有用户及其分数 并非该表上的所有用户都会有分数 因此在我的解决方案中 我首先使用一些 CTE 计算分数 然后在最终的 CTE 中 我提取完整的名册 并为没有实际分数的用户分配默认分数 虽然 CTE 并不太复杂
  • .Net 数据结构:ArrayList、List、HashTable、Dictionary、SortedList、SortedDictionary -- 速度、内存以及何时使用每种结构? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 NET 有很多复杂的数据结构 不幸的是 其中一些非常相似 我并不总是确定何时使用其中一个 何时使用另一个 我的大多数 C 和 VB 书籍都在一定程度上讨论了它们 但从未真正深入讨
  • 通过 WPF 中的代码隐藏访问资源

    我在窗口资源中定义了一个自定义集合 如下所示 在 Sketchflow 应用程序中 因此窗口实际上是一个 UserControl
  • 将DEAP(遗传算法库)与spark结合使用

    是否可以使用 DEAP http deap readthedocs io en master 与 Spark 集群来映射适应度评估函数 我想运行 GA 但适应度函数相当长 我计划将其分布在 Spark 集群上 你应该看看使用多个处理器DEA
  • Tkinter - 多个按钮的同一事件

    使用 Tkinter 我有很多按钮 我希望每次按下任何按钮时都会触发相同的回调函数 我怎样才能知道按下了哪个按钮 def call p1 Which Button was pressed pass for i in range 50 B1
  • 模拟 PDO 获取失败情况

    符合php文档 PDO方法fetch 返回值FALSE两者均未找到记录AND失败时 例如 当数据库访问出现问题时 假设我将 PHP 错误报告系统设置为在失败时抛出异常 PDO ATTR ERRMODE gt PDO ERRMODE EXCE
  • 如何彻底清除 Laravel 中的缓存?

    我运行这些命令 php artisan view clear php artisan route clear s php artisan cache clear php artisan config clear php artisan co
  • 如果有人“窃取”我的 Facebook App ID,他们会造成什么损害?

    我创建了一个 Facebook 应用程序 ID 并将站点 URL 设置为 localhost 以便在进行身份验证 通过客户端 JavaScript 后 我在开发应用程序时会被重定向到本地计算机 我很想知道此设置是否存在任何风险 特别是如果我
  • 警告:date_default_timezone_get():

    我已经研究了我能找到的所有答案 但没有运气让它发挥作用 当我尝试运行 symfony 时出现以下错误 警告 date default timezone get 依赖 系统的时区设置 你是required使用 date timezone 设置
  • 如何检查android数据库中的重复名称?

    我想从两个编辑文本中输入姓名和电话号码 我使用两个按钮保存并使用列表视图在模拟器中显示它 输入姓名后 当我单击 保存 按钮时如何检查我是否已经输入了相同的名字 我是 Android 新手 解释会非常有帮助 public void onCre
  • 将产品标签移至 WooCommerce 产品描述

    我需要将产品标签移至 WooCommerce 产品描述的底部 我在用 将自定义内容添加到 WooCommerce 产品描述中 答案代码确实有效 我在产品描述下方收到文本 这是描述中的最后一行 现在我想添加产品元信息 产品 SKU 和标签 但
  • 在 php 脚本中使用缓存

    我对 php 中的缓存感到困惑 我在我的 php 文件中创建了一个用于显示 2 到 500 的文件 现在我想使用缓存文件来存储数据并显示它 我的代码如下 现在我如何使用缓存文件来保存输出并进一步在浏览器中显示 如果还有其他方法可以在 php
  • 如何从 WC_Subscription 实例对象获取用户 ID

    我有两个功能需要帮助 我希望它们能够处理我的订阅任务 代码注释 是我想要弄清楚的 如果您有其他反馈 我也愿意接受 这用于完成初始订阅付款和订阅续订 function payment made subscription How do I ge
  • MySQL 似乎正在覆盖记录

    我在 MySQL 中有一个全新的表 可以这样描述 Team Match Auto Gear Kpa Climb 1721 1 3 5 5 1 5813 2 2 2 15 0
  • Node v8 垃圾收集器 :: 如何调试长标记-清除时间?

    我使用 trace gc 标志运行我的应用程序以尝试找到一些性能问题 嗯 看来我可能已经找到了 1288678 ms Mark sweep 498 8 549 0 gt 488 8 548 0 MB 4085 ms idle notific
  • 带有 IntelliJ 和 SBT 的自定义文件夹结构的 Uber jar

    我对云还很陌生SBT IntelliJ 所以试试我的运气IntelliJ SBT构建环境以在 dataproc 集群上部署我的 jar 这是我的项目结构的屏幕截图 代码非常简单 main 定义在 mytestmain 它调用定义在中的另一个