Ivo*_*Ivo 3 protocol-buffers gradle lombok
我在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 {
java {
srcDir "${projectDir}/build/generated/source/proto/main/java"
}
}
}
Run Code Online (Sandbox Code Playgroud)
警告:
Execution optimizations have been disabled for task ':generateProto' to ensure correctness due to the following reasons:
- Gradle detected a problem with the following location: '/build/generated/source/proto/main'. Reason: Task ':generateEffectiveLombokConfig' uses this output of task ':generateProto' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.4.2/userguide/validation_problems.html#implicit_dependency for more details about this problem.
Run Code Online (Sandbox Code Playgroud)
如何确保所有 protobuf 任务都在 lombok 任务之前完成?
小智 8
您将任务依赖关系设置如下
afterEvaluate {
generateEffectiveLombokConfig.mustRunAfter generateProto
}
Run Code Online (Sandbox Code Playgroud)
Executing 'build -m'...
:extractIncludeProto SKIPPED
:extractProto SKIPPED
:generateProto SKIPPED
:generateEffectiveLombokConfig SKIPPED
:compileJava SKIPPED
:processResources SKIPPED
:classes SKIPPED
:jar SKIPPED
:assemble SKIPPED
:generateTestEffectiveLombokConfig SKIPPED
:extractIncludeTestProto SKIPPED
:extractTestProto SKIPPED
:generateTestProto SKIPPED
:compileTestJava SKIPPED
:processTestResources SKIPPED
:testClasses SKIPPED
:test SKIPPED
:check SKIPPED
:build SKIPPED
BUILD SUCCESSFUL in 299ms
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1787 次 |
最近记录: |