gpt4 book ai didi

maven - 使 Storm JAR 仅在 Gradle 项目中编译

转载 作者:行者123 更新时间:2023-12-04 15:59:07 25 4
gpt4 key购买 nike

我正在尝试构建一个包含 Storm 项目的 Gradle 项目。为了在 Storm 上运行这个项目,我必须首先创建一个 JAR 文件并让 Storm 运行我的拓扑,例如

storm jar myJarFile.jar com.mypackage.MyStormMainClass

我遇到了问题,因为 Gradle 默认在编译时和运行时都包含 Storm 依赖项。这会导致以下异常:
Exception in thread "main" java.lang.RuntimeException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar.

给出的异常实际上很有帮助,并提示我们找出问题的根本原因。解决方案是在使用 Gradle 编译时包含 Storm 依赖项,但在生成最终 JAR 文件时不包含。

有谁知道如何解决这个问题? StackOverflow 上的其他帖子没有解决问题。如果您粘贴代码,请确保它实际运行。

谢谢!

最佳答案

下面我引用an answer of minesimilar thread on the storm-user mailing list .

就我而言,我选择使用 fatJar plugin为此目的,Gradle。

buildscript {
repositories {
mavenCentral()
mavenRepo url: "http://clojars.org/repo"
}
dependencies {
// see https://github.com/musketyr/gradle-fatjar-plugin
classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1'
}
}

// When using this plugin you can build a fat jar / uberjar with 'gradle fatJar'
apply plugin: 'fatjar'

dependencies {
compile 'storm:storm:0.8.2', {
ext {
fatJarExclude = true
}
}
}

您通过以下方式构建 fat jar :
$ gradle clean fatJar

最好的事物,
迈克尔

PS:对于它的值(value),我还在博客 Running a Multi-Node Storm Cluster 上发表了关于如何解决上述问题的博客。 .该帖子包含其他信息和陷阱,可能对您有帮助,也可能无济于事。

关于maven - 使 Storm JAR 仅在 Gradle 项目中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17421726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com