我对云还很陌生SBT/IntelliJ
,所以试试我的运气IntelliJ & SBT
构建环境以在 dataproc 集群上部署我的 jar。
这是我的项目结构的屏幕截图:
代码非常简单,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