2016-11-24 74 views
1

我正在开发一个spark应用程序。要在本地测试它,我想运行sbt运行。这要求依赖关系在本地可用。但我也想用sbt assembly来生成一个可用于​​的jar,该jar应该只包含一些依赖关系,例如不包括火花依赖。sbt程序集切换提供的依赖关系

当我标志着build.sbt的依赖作为% "provided"它不再是可通过sbt run

+0

这个问题有2子问题 - 你应该把它分成两个单独的问题,以便更容易回答。 –

+1

好的,我会这样做的。这里是问题2:http://stackoverflow.com/questions/40782435/sbt-switch-dependencies-for-runtime –

回答

2

如果案件排除在主built.sbt在组件中使用的罐子

excludedJars in assembly := { 
    val cp = (fullClasspath in assembly).value 
    cp filter {f => 
    f.data.getName.contains("spark"), 
    f.data.getName.startsWith("jar_name") 
    } 
} 
+1

但仍然不排除火花例如传递依赖关系。我正面临kryo问题..我怎样才能排除jar的所有“传递”依赖关系? –

+0

我想添加http://stackoverflow.com/questions/18838944/how-to-add-provided-dependencies-back-to-run-test-tasks-classpath/21803413#21803413是一个更好的解决方案,我的具体用例与火花。 –