https://kotlinlang.org logo
#android
Title
# android
l

Loboda Deni

07/15/2020, 6:52 AM
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

gildor

07/15/2020, 6:54 AM
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

Loboda Deni

07/15/2020, 6:56 AM
I have access to KotlinDependencyHandler, but i don't call kapt from my extension
Hmm
g

gildor

07/15/2020, 6:57 AM
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

Loboda Deni

07/15/2020, 6:58 AM
KotlinDependencyHandler not have dependencies property
g

gildor

07/15/2020, 6:59 AM
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

gildor

07/15/2020, 7:00 AM
DependencyHandler has add method
l

Loboda Deni

07/15/2020, 7:01 AM
But i have KotlinDependencyHandler, not DependencyHandler
g

gildor

07/15/2020, 7:01 AM
It’s method of this interface
Is it mpp?
l

Loboda Deni

07/15/2020, 7:01 AM
Yes
g

gildor

07/15/2020, 7:01 AM
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

Loboda Deni

07/15/2020, 7:03 AM
got it
Thanks
g

gildor

07/15/2020, 7:04 AM
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

Loboda Deni

07/15/2020, 7:08 AM
I use it like this now
g

gildor

07/15/2020, 7:08 AM
yeah, it also has name of configuration main/test. Like this: https://github.com/gildor/knel/blob/master/build.gradle.kts#L37
l

Loboda Deni

07/15/2020, 7:09 AM
I'll see, thanks
8 Views