[英]Spark / scala : publish a single fat jar with sbt
我正在嘗試將單個 Fat Jar 從 spark/scala 項目部署到私有 nexus 存儲庫。 發布工作正常,但我得到大量文件而不是單個程序集 Jar:
- *-組裝.jar
- *-assembly.jar.md5
- *-assembly.jar.sha1
- *-javadoc.jar
- *-javadoc.jar.md5
- *-javadoc.jar.sha1
- *-source.jar
- *-source.jar.md5
- *-source.jar.sha1
- *.jar
- *.jar.md5
- *.jar.sha1
- *-pom.jar
- *-pom.jar.md5
- *-pom.jar.sha1
我的built.sbt是:
name := "SampleApp"
version := "0.1-SNAPSHOT"
scalaVersion := "2.12.14"
ThisBuild / useCoursier := false
libraryDependencies ++= Seq(
"com.github.scopt" %% "scopt" % "4.0.1",
"org.apache.spark" %% "spark-sql" % "3.1.1" % "provided"
)
resolvers ++= Seq(
"confluent" at "https://packages.confluent.io/maven/"
)
assembly / assemblyMergeStrategy := {
case PathList("META-INF","services",xs @ _*) => MergeStrategy.filterDistinctLines
case PathList("META-INF",xs @ _*) => MergeStrategy.discard
case "application.conf" => MergeStrategy.concat
case _ => MergeStrategy.first
}
assembly / assemblyExcludedJars := {
val cp = (assembly / fullClasspath).value
cp filter { f =>
f.data.getName.contains("hadoop-hdfs-2")
f.data.getName.contains("hadoop-client")
}
}
assembly / artifact := {
val art = (assembly / artifact).value
art.withClassifier(Some("assembly"))
}
assembly / assemblyJarName := s"${name.value}-${version.value}.jar"
addArtifact(assembly / artifact, assembly)
resolvers += ("Sonatype Nexus Repository Manager" at "http://localhost:8081/repository/app/").withAllowInsecureProtocol(true)
credentials += Credentials("Sonatype Nexus Repository Manager", "localhost:8081", "user", "pass")
publishTo := {
val nexus = "http://localhost:8081/repository/app/"
if (isSnapshot.value) {
Some("snapshots" at nexus + "test-SNAPSHOT")
} else
Some("releases" at nexus + "test-RELEASE")
}
有沒有辦法在發布之前使用 sbt 過濾文件,以便僅獲得 *-assembly.jar? 非常感謝。
在我的情況下,這應該禁止發布不必要的文件:
publishArtifact in (Compile, packageBin) := false
publishArtifact in (Compile, packageDoc) := false
publishArtifact in (Compile, packageSrc) := false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.