Eya*_*yal 5 scala gradle apache-spark
我正在使用Gradle构建打算在Spark应用程序中使用的库。通常可以在Scala版本和Spark版本的多种组合中使用此类库。例如,对于spark-testing- base-您可以看到mvn cntrl上有多个工件,通常对于每个Scala / Spark组合都是可用的。
我正在寻找一种优雅的方法来进行此构建。
我在这个问题中看到了一个从同一源构建多个jar的解决方案,这是我想要的,但是它将涉及为每种组合手动编写子项目。(在链接的问题中,仅构建了两个工件,我想构建至少九个,也许更多)。
所以我的问题是-有更好的方法来做到这一点,还是上述解决方案是唯一的方法?
更新:我看到了两个可能有用的Gradle插件,但还没来得及检查一下-感兴趣的人的以下链接:
您也许可以使用配置来完成此操作。
尝试在您想要构建的依赖项的版本组合上的嵌套循环中声明配置。
然后,将依赖项的各种组合分配给配置。
为所有配置创建归档任务。
最后,声明所有配置的工件。
例如:
scalaDependencies.each { scalaDep ->
sparkDependencies.each { sparkDep ->
def configurationName = buildConfigurationName(scalaDep, sparkDep)
configurations.create(configurationName)
configurations."$configurationName" {
extendsFrom compile // this would be the simplest case
}
dependencies {
"$configurationName"(scalaDep)
"$configurationName"(sparkDep)
}
task("${configurationName}Jar", type: Jar) {
from "$configurationName"
}
artifacts {
"$configurationName"("${configurationName}Jar")
}
}
}
Run Code Online (Sandbox Code Playgroud)
和只是您通常声明为依赖项的字符串,包括各自的版本号scalaDependencies。你必须自己弄清楚
方法/闭包;)
我现在正在从臀部编码这个,但我相当确定如果你填写剩余的位,这将起作用。
您可能还需要另一个块来实际创建s,但如果它可以工作到创建 Jars,我认为您可以解决这个问题。sparkDepdendenciesbuildConfigurationNamemavenPublication
我有一个有点相似的工作示例,从名称列表中声明多个源集和工件,这也可能有帮助。
在这里找到它: https: //github.com/thokari/gradle-workshop/blob/master/examples/09-multiple-artifacts/build.gradle
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |