Hi. I want to write an extension in buildSrc, some...
# android
l
Hi. I want to write an extension in buildSrc, something like this: fun List <String> .kapt () {this.forEatch {kapt (it)}}, but in buildSrc there is no visibility on the kapt method. can I somehow connect kotlin-kapt here, or will I call this method in another way?
g
kapt
configuration is generated by Kotlin DSL, it’s not a method of api itself. Tho you can access it in precompiled script plugin, usually, for you use case it’s a lot easier to use dynamic syntax
also I don’t think that you can make this kind method, you need access to DependencyHandler or project (all configurations are part of dependency handler)
you can do something like this:
Copy code
fun DependencyHandler.kapt(dependencies: List<String>): Dependency? =
    dependencies.forEach { add("kapt", it) }
l
I have access to KotlinDependencyHandler, but i don't call kapt from my extension
Hmm
g
The only problem that you need DependencyHandler, somehow, you can invert it, if you want and pass it as argument, but not sure that it better
so as I said, you cannot use method generated from configuration outside of precompiled script plugin or build.gradle itself
l
KotlinDependencyHandler not have dependencies property
g
what is dependencies property?
in my extension
dependencies
is not a property, it’s a function argument with list of dependencies
Sorry
Not have add method
Only implementation, api, etc, but not kapt
g
DependencyHandler has add method
l
But i have KotlinDependencyHandler, not DependencyHandler
g
It’s method of this interface
Is it mpp?
l
Yes
g
it makes sense to mention this fact %)
Ehhh, this part of Kotlin plugin dsl is messy in my opinion
I also not sure how you can use Kapt with it
kapt should be a part of JVM module only
l
got it
Thanks
g
It’s a bit broader topic how configure dependencies for MPP, I prefer defining them using standard gradle API, do not use kotlin mpp plugin dsl
all those dependencies actually just delegate to project.dependecies.add
all what this KotlinDependencyHandler doing is constructing name of configuration
so method
api
actually just create string something like project.dependencies.add(“${platformName}Api”)
where platfromName in case of jvm is
jvm
, or maybe
android
if you configurea android module
l
I use it like this now
g
yeah, it also has name of configuration main/test. Like this: https://github.com/gildor/knel/blob/master/build.gradle.kts#L37
l
I'll see, thanks