Skip to content

Including the compiler plugin breaks Android build #85

Closed
@waltkb

Description

@waltkb

Including the Gradle compiler plugin id("love.forte.plugin.suspend-transform") (version 2.1.0-0.11.0 used with Kotlin 2.1.0) causes the Android build (or to be exact: even the Gradle project sync, which happens during compilation) to fail with this error message: Source set 'androidMain' of project '<module name>' is part of several compilations [debug, release].

Interestingly, even when the configuration is disabled:

suspendTransform {
    enabled = false // <--- Disabled
    includeRuntime = false // <--- Disabled
    useDefault()
}

This is an example build.gradle.kts of an Android project:

plugins {
    kotlin("multiplatform")
    kotlin("plugin.serialization")
    id("com.android.library")
    id("maven-publish")
    id("com.github.ben-manes.versions")
    id("love.forte.plugin.suspend-transform")
}

repositories {
    mavenCentral()
    maven("https://jitpack.io")
}

android {
    compileSdk = 34
    sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")

    defaultConfig {
        minSdk = 28
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    packaging {
        resources {
            excludes += "META-INF/versions/9/OSGI-INF/MANIFEST.MF"
        }
    }
}

kotlin {
    androidTarget {
        publishLibraryVariants("release")
    }
    sourceSets {
        val androidMain by getting {
            dependencies {
                api(project(":waltid-libraries:crypto:waltid-crypto"))
                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0")
                implementation("io.github.oshai:kotlin-logging:7.0.4")
            }
        }
        val androidInstrumentedTest by getting {
            dependencies {
                implementation(kotlin("test"))
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1")
                implementation("androidx.test.ext:junit:1.2.1")
                implementation("androidx.test:runner:1.6.1")
                implementation("androidx.test:rules:1.6.1")
            }
        }
    }
}

This is the Gradle stack trace:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project '<project name>'.
> Source set 'androidUnitTest' of project '<project name>' is part of several compilations [debugUnitTest, releaseUnitTest]

* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project '<project name>'.
	at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:84)
	...
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)

Caused by: java.lang.IllegalStateException: Source set 'androidUnitTest' of project '<project name>' is part of several compilations [debugUnitTest, releaseUnitTest]
	at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.configureMultiplatformDependency(SuspendTransformGradlePlugin.kt:202) // <------------------------------
	at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.configureDependencies$lambda$3(SuspendTransformGradlePlugin.kt:104)
	at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.withPluginWhenEvaluatedConf$lambda$8(SuspendTransformGradlePlugin.kt:130)
	at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.whenEvaluated$lambda$4(SuspendTransformGradlePlugin.kt:117)
	at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.whenEvaluated$lambda$5(SuspendTransformGradlePlugin.kt:117)
	at org.gradle.internal.code.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:124)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:173)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	...
	at jdk.proxy1/jdk.proxy1.$Proxy74.afterEvaluate(Unknown Source)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:247)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:244)
	at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1604)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:253)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	...
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)


CONFIGURE FAILED in 2s

The problem seems to occur at love.forte.plugin.suspendtrans.gradle.SuspendTransformGradlePluginKt.configureMultiplatformDependency(SuspendTransformGradlePlugin.kt:202).

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions