我已经使用 gradle 一段时间了,并且喜欢这个应用程序插件,它允许您创建包含命令行运行程序的 dist 包,这样您就不必担心设置类路径等。
最近我看到几个项目(即 dropwizard)建议使用 fat jar 文件。使用 gradle 中的 dist 包,我实际上并不认为需要创建 fat jar 文件。
我对 fat jar 文件有什么遗漏吗?
我正在尝试为Kotlin项目创建构建文件,该文件有时会包含Java源代码。过去在多项目构建中使用基于Groovy的构建文件时,我可以毫无问题地sourceCompatibility在subproject块中指定。使用Kotlin DSL,我知道它必须在java使用Kotlin DSL进行配置的块中,但是当我尝试从subproject根build.gradle.kts文件中的块中进行配置时,出现编译错误:
Script compilation errors:
Line 14: java {
^ Expression 'java' cannot be invoked as a function. The function 'invoke()' is not found
Line 14: java {
^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public val PluginDependenciesSpec.java: PluginDependencySpec defined in org.gradle.kotlin.dsl
Line 15: sourceCompatibility = JavaVersion.VERSION_1_8
^ Unresolved reference: sourceCompatibility
3 errors
Run Code Online (Sandbox Code Playgroud)
我在要使用的gradle构建文件中包含了要点。现在,如果我在一个子项目build.gradle.kts文件中指定了Java块,就可以使它工作,但是我希望将设置应用于所有子项目,而不仅仅是特定项目。
我有一个现有的应用程序,它使用 Hazelcast 来跟踪集群成员资格和分布式任务执行。我认为 Jet 可用于在现有应用程序之上添加分析,并且我正在尝试找出如何最好地将 Jet 分层到我们已有的应用程序之上。
所以我的第一个问题是,应该如何在我们现有的 Hazelcast 配置之上运行 Jet?我是否必须单独运行 Jet,或者用 Jet 替换我们现有的 Hazelcast 配置(因为 Jet 确实公开了 HazelcastInstance。)
我的第二个问题是,我看到很多使用 IMap 和 IList 的示例,但我没有看到任何使用主题作为来源的内容(我也不认为这是来源构建器中的一个选项)。我最初使用 Jet 的想法是将我们现有代码中的事件(io perf 数据、http 请求数据)发送到一个主题,然后让 Jet 处理该主题,从该数据生成分析,然后将其推送到 IMap。这是错误的方法吗?我应该使用其他结构将这些事件推送到 Jet 中吗?我看到我可以制作自己的自定义 Source,我可以在其中执行此操作,但我觉得如果我要追求这个,我一定走错了路,因为图书馆尚未为此特定目的提供一个。