44
55package kotlinx.rpc.grpc
66
7- import kotlinx.rpc.LIBRARY_VERSION
7+ import kotlinx.rpc.GRPC_KOTLIN_VERSION
8+ import kotlinx.rpc.GRPC_VERSION
9+ import kotlinx.rpc.PROTOBUF_VERSION
810import kotlinx.rpc.buf.BufExtension
911import kotlinx.rpc.proto.ProtocPlugin.Companion.GRPC_JAVA
1012import kotlinx.rpc.proto.ProtocPlugin.Companion.GRPC_KOTLIN
@@ -15,8 +17,10 @@ import kotlinx.rpc.buf.tasks.BufGenerateTask
1517import kotlinx.rpc.buf.tasks.registerBufGenYamlUpdateTask
1618import kotlinx.rpc.buf.tasks.registerBufGenerateTask
1719import kotlinx.rpc.buf.tasks.registerBufYamlUpdateTask
20+ import kotlinx.rpc.proto.KXRPC_PLUGIN_JAR_CONFIGURATION
1821import kotlinx.rpc.proto.ProtoSourceSet
1922import kotlinx.rpc.proto.ProtocPlugin
23+ import kotlinx.rpc.proto.configureKxRpcPluginJarConfiguration
2024import kotlinx.rpc.proto.configureProtoExtensions
2125import kotlinx.rpc.proto.grpcJava
2226import kotlinx.rpc.proto.grpcKotlin
@@ -35,7 +39,10 @@ import org.gradle.api.plugins.JavaPluginExtension
3539import org.gradle.api.tasks.compile.JavaCompile
3640import org.gradle.kotlin.dsl.findByType
3741import org.gradle.kotlin.dsl.newInstance
42+ import org.gradle.kotlin.dsl.the
3843import org.gradle.kotlin.dsl.withType
44+ import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
45+ import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension
3946import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
4047import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
4148import javax.inject.Inject
@@ -60,6 +67,7 @@ public open class GrpcExtension @Inject constructor(
6067
6168 init {
6269 project.configureBufExecutable()
70+ project.configureKxRpcPluginJarConfiguration()
6371
6472 createDefaultProtocPlugins()
6573
@@ -193,33 +201,38 @@ public open class GrpcExtension @Inject constructor(
193201
194202 private fun createDefaultProtocPlugins () {
195203 protocPlugins.create(KXRPC ) {
196- remote {
197- locator.set( " buf.build/kxrpc/grpc: ${ LIBRARY_VERSION } " )
204+ local {
205+ javaJar(project.configurations.named( KXRPC_PLUGIN_JAR_CONFIGURATION ).map { it.singleFile.absolutePath } )
198206 }
199207
200208 options.put(" debugOutput" , " protobuf-kxrpc-plugin.log" )
201209 options.put(" messageMode" , " interface" )
210+ options.put(" explicitApiModeEnabled" , project.provider {
211+ project.the<KotlinBaseExtension >().explicitApi != ExplicitApiMode .Disabled
212+ })
202213 }
203214
204215 protocPlugins.create(GRPC_JAVA ) {
205216 isJava.set(true )
206217
207218 remote {
208- locator.set(" buf.build/grpc/java" )
219+ locator.set(" buf.build/grpc/java:v $GRPC_VERSION " )
209220 }
210221 }
211222
212223 protocPlugins.create(GRPC_KOTLIN ) {
213224 remote {
214- locator.set(" buf.build/grpc/kotlin" )
225+ locator.set(" buf.build/grpc/kotlin:v $GRPC_KOTLIN_VERSION " )
215226 }
216227 }
217228
218229 protocPlugins.create(PROTOBUF_JAVA ) {
219230 isJava.set(true )
220231
221232 remote {
222- locator.set(" buf.build/protocolbuffers/java" )
233+ // for some reason they omit the first digit in this version:
234+ // https://buf.build/protocolbuffers/java?version=v31.1
235+ locator.set(" buf.build/protocolbuffers/java:v${PROTOBUF_VERSION .substringAfter(" ." )} " )
223236 }
224237 }
225238 }
0 commit comments