diff --git a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/caching/ShadowJarCachingTest.kt b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/caching/ShadowJarCachingTest.kt index f8ef875cc..cc72bf4aa 100644 --- a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/caching/ShadowJarCachingTest.kt +++ b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/caching/ShadowJarCachingTest.kt @@ -10,7 +10,6 @@ import kotlin.io.path.appendText import kotlin.io.path.readText import kotlin.io.path.writeText import org.gradle.api.file.DuplicatesStrategy -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test class ShadowJarCachingTest : BaseCachingTest() { @@ -211,7 +210,6 @@ class ShadowJarCachingTest : BaseCachingTest() { } } - @Disabled("TODO: https://github.com/GradleUp/shadow/pull/1601#discussion_r2260096815") @Test fun shadowJarIsCachedCorrectlyAfterApplicationChanged() { val mainClassName = "my.Main" diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.kt index 72d362abc..a6d6743d6 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.kt @@ -127,16 +127,18 @@ public abstract class ShadowApplicationPlugin : Plugin { } protected open fun Project.configureShadowJarMainClass() { - val mainClassName = applicationExtension.mainClass + // Default to empty string to avoid the error of the value not being configured yet. + val mainClassName = applicationExtension.mainClass.convention("") tasks.shadowJar.configure { task -> + task.inputs.property("mainClassName", mainClassName) task.doFirst { // Inject the attribute if it is not already present. if (!task.manifest.attributes.contains(mainClassAttributeKey)) { - task.manifest.attributes[mainClassAttributeKey] = mainClassName.orNull.also { value -> - if (value.isNullOrEmpty()) { - error("The main class must be specified and not left empty in `application.mainClass` or manifest attributes.") - } + val realClass = mainClassName.orNull + if (realClass.isNullOrEmpty()) { + error("The main class must be specified and not left empty in `application.mainClass` or manifest attributes.") } + task.manifest.attributes[mainClassAttributeKey] = realClass } } }