gradle構建java編寫的logstash外掛錯誤No signature of method: org.gradle.api.internal.tasks.DefaultTaskDependency
阿新 • • 發佈:2020-12-16
[root@VM_63_147_centos logstash-input-java_input_example]# ./gradlew gem Starting a Gradle Daemon (subsequent builds will be faster) FAILURE: Build failed with an exception. * Where: Build file '/data/shiqi/logstash-input-java_input_example/build.gradle' line: 101 * What went wrong: A problem occurred configuring root project'logstash-input-java_input_example'. > Could not create task ':gem'. > No signature of method: org.gradle.api.internal.tasks.DefaultTaskDependency$TaskDependencySet.getAt() is applicable for argument types: (ArrayList) values: [[task ':downloadAndInstallJRuby', task ':removeObsoleteJars', ...]] Possible solutions: getAt(int), getAt(java.lang.String), getAt(java.lang.String), head(), putAt(java.lang.String, java.lang.Object), wait() * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.orgBUILD FAILED in 12s
官網教程:https://www.elastic.co/guide/en/logstash/current/java-input-plugin.html
官網下載的logstash 最新版原始碼:https://github.com/elastic/logstash/tree/7.10
構建logstash原始碼:
gradlew assemble
檢視是否有:$LS_HOME\logstash-core\build\libs\logstash-core-7.10.1.jar
編寫Logstash Java input程式碼
下載官方demo:logstash input example:https://github.com/logstash-plugins/logstash-input-java_input_example
指定LOGSTASH_CORE_PATH
下載下來demo後,在專案根目錄建立gradle.properties
檔案,
新增一行資料:LOGSTASH_CORE_PATH=<執行gradlew assemble 後logstash編譯出來的核心jar包>/logstash-core
gradlew gem
在此處出現錯誤:No signature of method: org.gradle.api.internal
編輯 build.gradle
tasks.register("gem"){ dependsOn [downloadAndInstallJRuby, removeObsoleteJars, vendor, generateRubySupportFiles] doLast { buildGem(projectDir, buildDir, pluginInfo.pluginFullName() + ".gemspec") } } ################上面修改為######################## tasks.register("gem"){ dependsOn ([downloadAndInstallJRuby, removeObsoleteJars, vendor, generateRubySupportFiles]) doLast { buildGem(projectDir, buildDir, pluginInfo.pluginFullName() + ".gemspec") } }
這樣gradle就能識別了