标签: sbt-assembly

sbt-assembly:重复数据删除发现错误

我不确定mergestrategy或exclude jars是否是最好的选择.任何有关如何进一步处理此错误的帮助都会很棒!

[sameert@pzxdcc0151 approxstrmatch]$ sbt assembly
[info] Loading project definition from /apps/sameert/software/approxstrmatch/project
[info] Set current project to approxstrmatch (in build file:/apps/sameert/software/approxstrmatch/)
[info] Including from cache: scala-library.jar
[info] Checking every *.class/*.jar file's SHA-1.
[info] Merging files...
[info] Including from cache: curator-client-2.4.0.jar
[info] Including from cache: secondstring-20140729.jar
[info] Including from cache: slf4j-api-1.7.5.jar
[info] Including from cache: jsr305-1.3.9.jar
[info] Including from cache: jul-to-slf4j-1.7.5.jar
[info] Including from cache: jcl-over-slf4j-1.7.5.jar
[info] Including from cache: commons-digester-1.8.jar
[info] Including from cache: compress-lzf-1.0.0.jar
[info] Including from cache: commons-beanutils-1.7.0.jar …
Run Code Online (Sandbox Code Playgroud)

scala sbt sbt-assembly

113
推荐指数
4
解决办法
5万
查看次数

如何修复sbt报告"在GZIPInputStream中包装InputStream时出错:java.io.EOFException"?

sbt空目录中运行命令时,它会一直失败并出现以下异常:

$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
Error wrapping InputStream in GZIPInputStream: java.io.EOFException
    at sbt.ErrorHandling$.translate(ErrorHandling.scala:11)
    at sbt.WrapUsing.open(Using.scala:36)
    at sbt.Using.apply(Using.scala:24)
    at sbt.IO$$anonfun$gzipFileIn$1.apply(IO.scala:778)
    at sbt.IO$$anonfun$gzipFileIn$1.apply(IO.scala:777)
    at sbt.Using.apply(Using.scala:25)
    at sbt.IO$.gzipFileIn(IO.scala:777)
    at sbt.Sync$.readUncaught(Sync.scala:88)
    at sbt.Sync$.readInfo(Sync.scala:84)
    at sbt.Sync$$anonfun$apply$1.apply(Sync.scala:29)
    at sbt.Sync$$anonfun$apply$1.apply(Sync.scala:23)
    at sbt.Defaults$$anonfun$copyResourcesTask$1.apply(Defaults.scala:770)
    at sbt.Defaults$$anonfun$copyResourcesTask$1.apply(Defaults.scala:766)
    at scala.Function4$$anonfun$tupled$1.apply(Function4.scala:35)
    at scala.Function4$$anonfun$tupled$1.apply(Function4.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at …
Run Code Online (Sandbox Code Playgroud)

sbt sbt-assembly

53
推荐指数
2
解决办法
1万
查看次数

如何将"提供的"依赖项添加回运行/测试任务的类路径?

这是一个例子build.sbt:

import AssemblyKeys._

assemblySettings

buildInfoSettings

net.virtualvoid.sbt.graph.Plugin.graphSettings

name := "scala-app-template"

version := "0.1"

scalaVersion := "2.9.3"

val FunnyRuntime = config("funnyruntime") extend(Compile)

libraryDependencies += "org.spark-project" %% "spark-core" % "0.7.3" % "provided"

sourceGenerators in Compile <+= buildInfo

buildInfoPackage := "com.psnively"

buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, target)

assembleArtifact in packageScala := false

val root = project.in(file(".")).
  configs(FunnyRuntime).
  settings(inConfig(FunnyRuntime)(Classpaths.configSettings ++ baseAssemblySettings ++ Seq(
    libraryDependencies += "org.spark-project" %% "spark-core" % "0.7.3" % "funnyruntime"
  )): _*)
Run Code Online (Sandbox Code Playgroud)

目标是使用spark-core,"provided"因此它和它的依赖项不包含在程序集工件中,而是将它们重新包含在运行时类路径中以用于run- 和 - test相关的任务. …

scala sbt sbt-assembly

39
推荐指数
2
解决办法
2万
查看次数

sbt-pack和sbt-assembly之间的主要区别是什么?

我刚刚偶然发现了sbt-pack插件.开发流似乎很稳定.令我惊讶的是,我认为(引用sbt-pack的标题)"创建可分发的Scala包"的唯一插件.sbt-assembly(在其他功能中).

插件之间的主要区别是什么?我什么时候应该使用另一个?

sbt sbt-assembly

35
推荐指数
2
解决办法
1万
查看次数

找不到sbt程序集命令

我正在尝试运行sbt汇编.根据https://github.com/sbt/sbt-assembly ,对于sbt 0.13.6+(我在0.13.7上),这应该自动包含在JvmPlugin的任何内容中.根据sbt plugins我在root中启用了JvmPlugin.当我跑步时,sbt assembly我得到"不是一个有效的commamdn:assembly".我尝试过使用包含sbt-assembly的旧方法和所有不同类型的sbt配置,但似乎都没有.这是我的构建文件的样子(注意sbt包工作正常)

assembly.sbt

addSbtPlugin("com.eed3si8n" % "sbt-assembly" % "0.13.0")

build.sbt

lazy val commonSettings = Seq(
  organization := "com.test",
  version := "1.0",
  scalaVersion := "2.10.4"
)

lazy val root = (project in file(".")).
  settings(commonSettings: _*).
  settings(
    name := "test",

    resolvers ++= Seq(
      ...
    ),

    libraryDependencies ++= Seq(
      ...
    )
)
Run Code Online (Sandbox Code Playgroud)

这是错误:

[error] Not a valid command: assembly
[error] Not a valid project ID: assembly
[error] Expected ':' (if selecting a configuration)
[error] Not a …
Run Code Online (Sandbox Code Playgroud)

sbt sbt-assembly

31
推荐指数
1
解决办法
2万
查看次数

使用sbt-assembly进行汇编合并策略问题

我正在尝试使用sbt-assembly将scala项目转换为可部署的胖jar .当我在sbt中运行我的程序集任务时,我收到以下错误:

Merging 'org/apache/commons/logging/impl/SimpleLog.class' with strategy 'deduplicate'
    :assembly: deduplicate: different file contents found in the following:
    [error] /Users/home/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:org/apache/commons/logging/impl/SimpleLog.class
    [error] /Users/home/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.6.4.jar:org/apache/commons/logging/impl/SimpleLog.class
Run Code Online (Sandbox Code Playgroud)

现在来自sbt-assembly文档:

如果多个文件共享相同的相对路径(例如,多个依赖项JAR中名为application.conf的资源),则默认策略是验证所有候选项具有相同的内容,否则出错.可以使用以下内置策略之一或编写自定义策略在每个路径的基础上配置此行为:

  • MergeStrategy.deduplicate 是上面描述的默认值
  • MergeStrategy.first 选择classpath顺序中的第一个匹配文件
  • MergeStrategy.last 挑选最后一个
  • MergeStrategy.singleOrError 在冲突时出现错误消息
  • MergeStrategy.concat 简单地连接所有匹配的文件并包含结果
  • MergeStrategy.filterDistinctLines 也可以连接,但在此过程中会留下重复的内容
  • MergeStrategy.rename 重命名源自jar文件的文件
  • MergeStrategy.discard 只是丢弃匹配的文件

通过这个我设置我的build.sbt如下:

import sbt._
import Keys._
import sbtassembly.Plugin._
import AssemblyKeys._
name := "my-project"
version := "0.1"
scalaVersion := "2.9.2"
crossScalaVersions := Seq("2.9.1","2.9.2")

//assemblySettings
seq(assemblySettings: _*)

resolvers ++= Seq(
    "Typesafe Releases Repository" at "http://repo.typesafe.com/typesafe/releases/",
    "Typesafe Snapshots Repository" at "http://repo.typesafe.com/typesafe/snapshots/",
    "Sonatype Repository" at …
Run Code Online (Sandbox Code Playgroud)

deployment scala executable-jar sbt sbt-assembly

26
推荐指数
4
解决办法
3万
查看次数

如何有效地使用SBT,Spark和"提供"依赖项?

我正在Scala中构建一个Apache Spark应用程序,我正在使用SBT来构建它.这是事情:

  1. 当我在IntelliJ IDEA下开发时,我希望Spark依赖项包含在类路径中(我正在使用主类启动常规应用程序)
  2. 当我打包应用程序(感谢sbt-assembly)插件时,我希望Spark依赖项包含在我的胖JAR中
  3. 当我运行单元测试时sbt test,我希望Spark依赖项包含在类路径中(与#1相同,但来自SBT)

为了匹配约束#2,我将Spark依赖关系声明为provided:

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided",
  ...
)
Run Code Online (Sandbox Code Playgroud)

然后,sbt-assembly的文档建议添加以下行以包含单元测试的依赖项(约束#3):

run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run))
Run Code Online (Sandbox Code Playgroud)

这使得约束#1没有被完全填充,即我无法在IntelliJ IDEA中运行应用程序,因为没有拾取Spark依赖项.

使用Maven,我使用特定的配置文件来构建超级JAR.这样,我将Spark依赖关系声明为主要配置文件(IDE和单元测试)的常规依赖关系,同时将它们声明provided为胖JAR打包.请参阅https://github.com/aseigneurin/kafka-sandbox/blob/master/pom.xml

使用SBT实现这一目标的最佳方法是什么?

intellij-idea sbt sbt-assembly apache-spark

25
推荐指数
3
解决办法
1万
查看次数

具有不同外部依赖关系的多个可执行jar文件来自具有sbt-assembly的单个项目

我有一个使用build.scala文件使用sbt构建的scala项目.我可以使用sbt-assembly从这个项目生成一个可执行的jar文件没有问题.现在我想生成多个可执行jar文件,其中每个文件包含一组通用的内部和外部基本依赖项以及不同的外部依赖项.

当前版本的sbt-assembly有可能吗?在maven中这很容易,因为可以在pom中定义多个配置文件,每个配置文件生成一个单独的jar,但是在sbt-assembly中你将程序集设置传递给你的项目,我还没有想出一种方法来修改设置来生成多个jar文件.

scala sbt sbt-assembly

23
推荐指数
1
解决办法
2587
查看次数

你如何评论.sbt文件中的一行

这可能听起来像一个愚蠢的问题,但我一直在互联网上搜索如何在sbt文件中注释一行.有谁知道怎么做?

scala sbt sbt-assembly

21
推荐指数
1
解决办法
3681
查看次数

为什么Spark应用程序失败并出现"ClassNotFoundException:找不到数据源:kafka"作为带有sbt程序集的uber-jar?

我正在尝试运行像https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredKafkaWordCount.scala这样的示例.我从http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html上的Spark Structured Streaming Programming指南开始.

我的代码是

package io.boontadata.spark.job1

import org.apache.spark.sql.SparkSession

object DirectKafkaAggregateEvents {
  val FIELD_MESSAGE_ID = 0
  val FIELD_DEVICE_ID = 1
  val FIELD_TIMESTAMP = 2
  val FIELD_CATEGORY = 3
  val FIELD_MEASURE1 = 4
  val FIELD_MEASURE2 = 5

  def main(args: Array[String]) {
    if (args.length < 3) {
      System.err.println(s"""
        |Usage: DirectKafkaAggregateEvents <brokers> <subscribeType> <topics>
        |  <brokers> is a list of one or more Kafka brokers
        |  <subscribeType> sample value: subscribe
        |  <topics> is a list of one or more …
Run Code Online (Sandbox Code Playgroud)

scala sbt sbt-assembly apache-spark spark-structured-streaming

21
推荐指数
2
解决办法
2万
查看次数