在Java中创建自定义协议插件

时间:2019-06-02 11:51:43

标签: java plugins protoc

我正在尝试编写自定义的ProtoC插件,但是无法使该协议与jar文件一起使用。似乎它尝试将其作为应用程序运行,我知道了:

.../libs/plugin-java-protobuf-1.0-jvm8.jar: program not found or is not executable

我见过解决方案,其中使用java -jar ...创建了.sh脚本,但是我想将我的插件与Gradle Protobuf插件和复合构建(includeBuild ...)一起使用。

我找到了解决此问题的kroto-plus插件https://github.com/marcoferrer/kroto-plus/blob/master/protoc-gen-kroto-plus/build.gradle。它似乎是可执行的。

但是不幸的是,我无法理解我到底需要做什么。我已经尝试过bootJar:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.21'
    id 'org.springframework.boot'
}

jar {
    archiveClassifier = 'jvm8'
    manifest {
        attributes 'Main-Class': 'plugin.PluginKt'
    }
}

bootJar {
    archiveClassifier = 'jvm8'
}

但是结果是相同的:

.../libs/plugin-java-protobuf-1.0-jvm8.jar: program not found or is not executable

那么如何使jar真正具有可执行性?

1 个答案:

答案 0 :(得分:0)

我很傻,只是忘记设置launchScript()。因此,下一个配置有效:

plugins {
    id 'org.springframework.boot' version '2.1.5.RELEASE'
}

jar {
    enabled = false
    archiveClassifier = 'jvm8'
}

bootJar {
    launchScript()
    archiveClassifier = 'jvm8'
    mainClassName = 'plugin.PluginKt'
}

jar.dependsOn(bootJar)