当前位置: 首页 > 知识库问答 >
问题:

配置Intellij Idea插件Gradle-kotlin-dsl kotlin

扈运浩
2023-03-14

嘿,我想在intellij idea插件中设置protobuf作为其他protobuf服务器(用golang编写)的客户端。这将是我对grpc的第一种java方法。我尝试使用kotlin无类生成器,但我的成功率甚至低于这种方法。

我的目标是:最佳案例场景:插件将允许将proto编译为kt文件非常好的案例场景:插件将输出java文件到src/main/proto

现有代码结构:

└───src
    ├───main
    │   ├───kotlin
    │   │   └───pl
    │   │       └───dominikw
    │   │           ├───configuration
    │   │           ├───model
    │   │           ├───service
    │   │           │   └───impl
    │   │           └───ui
    │   ├───proto
    │   └───resources
    │       ├───icons
    │       └───META-INF
    └───test
        ├───kotlin
        └───resources

和Gradle kotlin dsl文件:

import com.google.protobuf.gradle.*
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

group = "pl.dominikw"
version = "0.1.1"
val protobufVersion = "3.9.1"

buildscript {
    repositories {
        mavenCentral()
        maven("https://oss.sonatype.org/content/repositories/snapshots/")
        maven("https://dl.bintray.com/jetbrains/intellij-plugin-service")
    }
    dependencies {
        classpath("org.jetbrains.intellij.plugins:gradle-intellij-plugin:0.5.0-SNAPSHOT")
    }
}

plugins {
    id("org.jetbrains.intellij") version "0.4.10"
    id("com.google.protobuf") version "0.8.10"
    kotlin("jvm") version "1.3.50"
    java
    idea
}

repositories {
    mavenCentral()
    maven("https://dl.bintray.com/kittinunf/maven")
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.1")
    implementation("com.github.kittinunf.fuel", "fuel", "2.2.0")

    compile("com.google.protobuf:protobuf-java:$protobufVersion")
    compile("io.grpc:grpc-stub:1.15.1")
    compile("io.grpc:grpc-protobuf:1.15.1")
    if (JavaVersion.current().isJava9Compatible) {
        compile("javax.annotation:javax.annotation-api:1.3.2")
    }
//    protobuf(files("src/main/proto"))
//    "mainProto"(files("src/main/proto"))
    runtime("io.grpc:grpc-netty:1.14.0")
}

sourceSets {
    main {
        java.srcDir("src/main/kotlin")
        resources.srcDir("src/main/resources")
        proto.srcDir("src/main/proto")
    }
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
    version = "2019.2"
}
tasks.getByName<org.jetbrains.intellij.tasks.PatchPluginXmlTask>("patchPluginXml") {
    changeNotes(
        """
      Add change notes here.<br>
      <em>most HTML tags may be used</em>"""
    )
}

configure<org.jetbrains.intellij.IntelliJPluginExtension> {
    version = "2019.2"
    updateSinceUntilBuild = true
    pluginName = "Windchill-Plugin"
}
tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:$protobufVersion"
    }
    plugins {
        id("grpc") {
            artifact = "io.grpc:protoc-gen-grpc-java:1.15.1"
        }
    }
    generateProtoTasks {
        ofSourceSet("main").forEach {
            it.plugins {
                id("grpc")
            }
        }
    }
}

错误代码如下:

7:17:20 PM: Executing task 'generateProto'...

> Task :extractIncludeProto UP-TO-DATE
> Task :extractProto UP-TO-DATE
> Task :generateProto FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':generateProto'.
> protoc: stdout: . stderr: C:\Users\XXX\IdeaProjects\Windchill-Intellij-Plugin\build\extracted-protos\main\service.proto: Input is shadowed in the --proto_path by "C:/Users/XXX/IdeaProjects/Windchill-Intellij-Plugin/src/main/proto/service.proto".  Either use the latter file as your input or reorder the --proto_path so that the former file's location comes first.


* 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.org

BUILD FAILED in 0s
3 actionable tasks: 1 executed, 2 up-to-date
7:17:20 PM: Task execution finished 'generateProto'.

共有1个答案

白才艺
2023-03-14

您的错误消息是:

  ...Input is shadowed in the --proto_path by "C:/Users/XXX/IdeaProjects/Windchill-Intellij-Plugin/src/main/proto/service.proto". 

这个proto文件夹中的proto文件有一些无效的定义。

 类似资料:
  • 我正在尝试建立一个基本的Gradle项目。我的构建。gradle文件如下。我一直得到下面的错误。我不明白,因为你可以在这里找到插件。。。我想我的目标是:https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin 更新:如果我注释掉Kotlin行,Spring Boot插件也会发生同样的事情。这不仅仅针对K

  • 如https://cloud . Google . com/app engine/docs/standard/Java/tools/Gradle-reference上所述,AppEngine Gradle插件提供如下配置: 使用 时,这样的配置应该是什么样子? 我正在查看AppEngine任务,但不明白如何将其连接到适当的Kotlin DSL设置。 编辑 当简单地将上述块添加到<code>buil

  • 我在我的kotlin dsl构建文件中使用jsonschema2pojo gradle插件。 现在我需要更改插件的默认配置,如下所述 当我加上这个,我得到下面的错误- $gradle generateJsonSchema2Pojo 配置项目:e: /Users/rajkumar.natarajan/Documents/Coding/misc/jsonschema2pojo-enum-demo/bu

  • 我试图使用kotlin与gradle,但我无法成功地创建一个项目与Intellij想法15。 我用两个模块和创建了一个简单项目。 是普通的java项目,编译和运行都非常好。 当运行时,所有项目都编译成功,但当运行时,我会出现以下错误: 此外,Intellij似乎无法将目录识别为源目录(它没有用蓝色标记),并且在编辑hellokotlin.kt文件时,我无法使用自动完成功能。 下面是Intellij

  • 我正在尝试将Gradle插件中的一些任务配置从Groovy转换为Kotlin。我发现的所有示例都是关于普通构建脚本的,这种方法似乎并没有直接转化为插件的使用。我的尝试如下: 产生以下错误: 类型不匹配:推断类型是()- 做这件事的正确方法是什么?

  • 我正在尝试运行我的项目,它运行没有任何问题,但在我更新Android Studio后…我有一个错误,我不知道我使用了哪个android studio版本之前,更新降级到它。 Android Gradle插件只支持Kotlin Gradle插件1.3.0及更高版本。以下依赖项不满足所需版本:项目':assets_audio_player'->org.jetbrains.kotlin:kotlin-g