我正在编写一些Spark代码并编译成一个超级jar。对于该应用程序而言,您通常不希望Spark库位于jar中,因为它们将在群集上提供,并且它们非常重要。典型的诀窍是你的build.gradle
看起来像:
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
}
dependencies {
compile 'some.library:lib:0.1'
provided 'org.apache.spark:spark-core_2.11:2.1.0'
}
这可以从命令行运行。一切都编译完毕,我可以毫无问题地部署到Spark集群。然而,IntelliJ感到困惑并报告了未解决的参考:spark"像import org.apache.spark.api.java.JavaRDD
这样的东西。
如何保持jar的依赖性并让IntelliJ保持高兴?
答案 0 :(得分:0)
我想我找到了解决方案:the idea
plugin:
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
}
idea.module {
scopes.PROVIDED.plus += [ configurations.provided ]
}
dependencies {
compile 'some.library:lib:0.1'
provided 'org.apache.spark:spark-core_2.11:2.1.0'
}
为了这种事情而必须添加一个额外的插件和更多代码构建令人讨厌,但它似乎有效。