我在gradle中同时使用lombok和protobuf。这会生成独立的任务generateEffectiveLombokConfig
和。generateProto
然而lombok任务应该依赖于protobuf任务,否则lombok生成的代码引用的是protoc尚未生成的Java代码。
syntax = "proto3";
package my.example.v1;
message Task {
string id = 1;
repeated string names_to_print = 2;
}
Run Code Online (Sandbox Code Playgroud)
package org.example;
import lombok.experimental.UtilityClass;
import my.example.v1.*;
@UtilityClass
public class Worker {
public void work(TaskOuterClass.Task task) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
plugins {
id 'java'
id 'io.freefair.lombok' version '6.4.3'
id 'com.google.protobuf' version '0.8.18'
}
group 'org.example'
repositories {
mavenCentral()
}
dependencies {
implementation "com.google.protobuf:protobuf-java:3.20.1"
implementation "com.google.protobuf:protobuf-java-util:3.20.1"
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 protobuf 的输出添加为 sourceSet 以确保首先执行 protobuf 任务,但我收到警告:
sourceSets {
main …
Run Code Online (Sandbox Code Playgroud)