Hi guys. I am publishing a library, `foo:foo-runti...
# gradle
n
Hi guys. I am publishing a library,
foo:foo-runtime:0.1.0
with many KMP targets on a local repository. The library source sets look like this: •
frontendMain
is a plain jvm target •
backendMain
is a parent for all androidNative* targets The lib also ships a Gradle plugin which observes the KMP plugin and adds
foo:foo-runtime:0.1.0
individually to all supported targets that it finds (either jvm or androidNative). It’s the common pattern of a Gradle plugin that adds the runtime dependency automatically. Now in the consumer project,
:bar
, I apply this plugin and add relevant targets. • When I declare
jvm()
target, I can correctly see stuff from
foo:frontendMain
• When I declare
androidNativeArm64()
target (for example), I can correctly see stuff from
foo:backendMain
• But in my merged source set
bar:androidNativeMain
, which is a parent for all androidNative* targets, I can’t see
foo:backendMain
at all. I seem to remember this used to work, shouldn’t it? Note: my plugin can’t add
foo:foo-runtime:0.1.0
to
bar:androidNativeMain
, it doesn’t know what source sets exists, it can only act on the individual end targets. Also I can’t add it to
commonMain
because the library does not support all targets and if any of them is defined in the consumer project, Gradle fails.