https://kotlinlang.org logo
#multiplatform
Title
# multiplatform
k

Kirill Zhukov

08/09/2019, 6:55 PM
👋 I’m trying to specify jvm target for a Kotlin mpp dependency, my original error is this:
Copy code
Execution failed for task ':protos:kaptKotlin'.
> Could not resolve all files for configuration ':protos:_classStructurekaptKotlin'.
   > Could not resolve com.squareup.wire:wire-runtime:3.0.0-rc01.
     Required by:
         project :protos
      > Cannot choose between the following variants of com.squareup.wire:wire-runtime:3.0.0-rc01:
          - jvm-api
          - jvm-runtime
          - metadata-api
        All of them match the consumer attributes:
          - Variant 'jvm-api' capability com.squareup.wire:wire-runtime:3.0.0-rc01:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'java-api-jars' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
          - Variant 'jvm-runtime' capability com.squareup.wire:wire-runtime:3.0.0-rc01:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'java-runtime-jars' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
          - Variant 'metadata-api' capability com.squareup.wire:wire-runtime:3.0.0-rc01:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'common' but wasn't required.
It seems to be caused by Kotlin annotation processor bug (https://youtrack.jetbrains.com/issue/KT-33206). As a workaround creating custom configuration and setting usage attribute for it works:``` configurations { wire { attributes.attribute(Usage.USAGE_ATTRIBUTE, getObjects().named(Usage, Usage.JAVA_RUNTIME)) } } dependencies { wire deps.wire.runtime } ``` However, originally this dependency is transitive and I need it to keep it this way. How would I do that?
The difference here is instead of dependency being used directly with
kapt
, my dependency is used with
api
configuration and gets affected by kapt in a way that I don’t understand
I think I found the problem, it’s incremental kapt:
kapt.incremental.apt=true
I will file a ticket
2 Views