gpt4 book ai didi

java - gradle生成protobuf类但显示编译错误

转载 作者:行者123 更新时间:2023-12-02 01:10:49 25 4
gpt4 key购买 nike

生成的 protobuf 类如预期位于 generated-sources 下。

但它引用了 com.google.protobuf,例如下面的代码。我收到编译错误,指出未找到 com.google.protobuf。

  public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}

下面是我的 build.gradle 文件。

plugins {
id 'org.springframework.boot' version '2.2.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
id 'com.google.protobuf' version '0.8.10'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

test {
useJUnitPlatform()
}

sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
java {
// include self written and generated code
srcDirs 'src/main/java', 'generated-sources/main/java'
}
}
// remove the test configuration - at least in your example you don't have a special test proto file
}

protobuf {
// Configure the protoc executable
protoc {
// Download from repositories
artifact = 'com.google.protobuf:protoc:3.0.0'
}

generateProtoTasks.generatedFilesBaseDir = 'generated-sources'

generateProtoTasks {
// all() returns the collection of all protoc tasks
all().each { task ->
// Here you can configure the task
}

// In addition to all(), you may get the task collection by various
// criteria:

// (Java only) returns tasks for a sourceSet
ofSourceSet('main')

}
}

我认为问题是 protobuf 库没有显示在我的 intellij 项目的外部库中。有没有办法让它与gradle一起工作?

最佳答案

工作 gradle 文件:

plugins {
id 'org.springframework.boot' version '2.2.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
id 'com.google.protobuf' version '0.8.10'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.google.protobuf:protobuf-java:3.11.1'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

test {
useJUnitPlatform()
}

sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
java {
// include self written and generated code
srcDirs 'src/main/java', 'generated-sources/main/java'
}
}
// remove the test configuration - at least in your example you don't have a special test proto file
}

protobuf {
// Configure the protoc executable
protoc {
// Download from repositories
artifact = 'com.google.protobuf:protoc:3.6.0'
}

generateProtoTasks.generatedFilesBaseDir = 'generated-sources'

generateProtoTasks {
// all() returns the collection of all protoc tasks
all().each { task ->
// Here you can configure the task
}

// In addition to all(), you may get the task collection by various
// criteria:

// (Java only) returns tasks for a sourceSet
ofSourceSet('main')

}
}

关于java - gradle生成protobuf类但显示编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com