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

Gradle协议任务没有从依赖项中获取定义

刘星火
2023-03-14

我有两个Gradle子项目,它们基本上都是哑protobuf容器。一个子项目需要从另一个子项目导入定义,但我似乎不知道如何让protobuf Gradle插件正常工作(我对Gradle还比较陌生)。

这里有一个例子。

目录布局:

build.gradle
settings.gradle
gradle.properties
dependency/
|
 - build.gradle
 - src/main/proto/dependency.proto
 main/
|
 - build.gradle
 - src/main/proto/main.proto

建筑gradle(顶层)

plugins {
  id "com.google.protobuf" version "0.8.12"
  id "java"
}

configure (allprojects) {
    apply plugin: 'java'
    apply plugin: 'com.google.protobuf'
}

设置。格拉德尔

rootProject.name = 'sample'

include 'main'
include 'dependency'

gradle.properties

group=sample
version=0.1.0

依赖关系/构建。格拉德尔

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.11.0"
    }
}

dependencies {
    compile 'com.google.protobuf:protobuf-java:3.11.4'
    compile 'com.google.protobuf:protobuf-java-util:3.11.4'
}

依赖关系/src/main/proto/dependency。原型

syntax = "proto3";

package dependency;

option java_package = "dependency";

message DependencyRequest {
        string foo = 1;
}

message DependencyResponse {
        string bar = 1;
}

主/构建。格拉德尔

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.11.0"
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.27.2'
        }
    }
    generateProtoTasks {
        all()*.plugins {
            grpc {}
        }
    }
}

dependencies {
    compile 'com.google.protobuf:protobuf-java:3.11.4'
    compile 'com.google.protobuf:protobuf-java-util:3.11.4'

    protobuf project(':dependency')
}

main/src/main/proto/main。原型

syntax = "proto3";

package main;

option java_package = "main";

import "dependency/dependency.proto";

service MainService {

    rpc CallDependency(DependencyRequest) returns (DependencyResponse) {}

}

当我尝试构建时,会出现以下错误:

$ ./gradlew :main:compileJava
> Task :main:generateProto FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':main:generateProto'.
> protoc: stdout: . stderr: dependency/dependency.proto: File not found.
  main.proto:7:1: Import "dependency/dependency.proto" was not found or had errors.
  main.proto:11:24: "DependencyRequest" is not defined.
  main.proto:11:52: "DependencyResponse" is not defined.

我读了插件的留档和这个答案,但是我还没能让它工作。知道为什么协议任务没有被接收dependency.proto?

共有1个答案

祁鸿哲
2023-03-14

显然,协议文件得到了正确的设置,但有一个不匹配的包名称,导致main.proto无法找到dependency.proto.我能够得到这个工作通过删除协议定义中的包名称。

如果将来有人遇到此问题,请检查您的包名称和导入,以确保它们是正确的。

 类似资料:
  • 问题内容: 可以运行以了解模块任务的依赖性。有没有办法找到 buildscript依赖 的 传递依赖 ? 示例: 直接取决于: 可以在MVNRepository上看到。但是,这些工件有其自己的依赖性。有没有找到方法而无需手动遍历整个依赖树的方法? 为了澄清起见,我正在谈论的类路径由以下方式定义: 问题答案: 您可以使用以下命令: Udacity提供了很棒的Android Gradle 教程,但是您

  • 我试图通过这个Gradle插件https://github.com/theboegl/gradle-launch4j使用http://launch4j.sourceforge.net/。 当我执行时,我会得到以下输出。 这是我的年级版本信息。 这是我的构建脚本。

  • 我想在Gradle拥有所有可用的依赖构件之后,在将来手动下载依赖构件,因此我想获得Gradle用来下载这些构件的URL。 有没有一种方法可以获得Gradle下载的依赖项的URL?

  • 我对Gradle完全陌生。首先,我尝试为简单的控制台Java应用程序创建一个构建脚本,而不使用Java插件。maven repository中的代码中只有两个依赖项。因此,我的构建包含一个任务,它扩展了JavaCompile,我在其中指定了类路径、目标等 我的项目不应用java插件,因此我需要自己创建依赖项配置,如下所示: 然后我可以将依赖项绑定到此配置: 据我所知,在那之后我必须将那些配置与我的

  • 在命令行中,我需要构建一个没有依赖项的可执行jar。当前的“gradle build”命令给了我一个带有依赖项的jar。 在StackOverflow上找不到这个。如果是重复的问题,指给我看。谢谢。