Я создал пример проекта для этого. Проект root называется ' protobuffer ' и имеет два подпроекта:
' proto содержит файлы прототипа для проекта java. Файл проекта build.gradle.kts выглядит следующим образом:
import com.google.protobuf.gradle.*
plugins {
id ("com.google.protobuf")
}
tasks.check { dependsOn("generateProto") }
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.6.1"
}
generatedFilesBaseDir = File(project(":java-project").projectDir.toString(), "src").toString()
}
dependencies {
implementation("com.google.protobuf:protobuf-java:3.6.1")
}
Root проекта build.gradle.kts * 1026 Файл * выглядит следующим образом:
import com.google.protobuf.gradle.GenerateProtoTask
plugins {
java
id ("com.google.protobuf") version ("0.8.8") apply false
}
allprojects {
repositories {
mavenCentral()
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
}
subprojects {
apply(plugin="java")
apply(plugin="idea")
if (name != "proto") {
tasks.withType<JavaCompile> {
dependsOn(project(":proto").tasks.withType<GenerateProtoTask>())
}
}
}
Файл settings.gradle.kts в проекте root выглядит следующим образом:
rootProject.name = "protobuffer"
include("proto")
include("java-project")
pluginManagement {
repositories {
mavenLocal()
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == "com.google.protobuf") {
useModule("com.google.protobuf:protobuf-gradle-plugin:${requested.version}")
}
}
}
}