diff --git a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/JavaPluginsTest.kt b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/JavaPluginsTest.kt index 43d7cc948..bfda7f696 100644 --- a/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/JavaPluginsTest.kt +++ b/src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/JavaPluginsTest.kt @@ -951,105 +951,75 @@ class JavaPluginsTest : BasePluginTest() { @Issue("https://github.com/GradleUp/shadow/issues/882") @Test fun compatGradleArtifactTransform() { - settingsScript.writeText("include('app', 'lib')\n") - path("lib/build.gradle") + settingsScript.appendText( + """ + include 'lib', 'app' + """ + .trimIndent() + ) + projectScript.writeText("") + + path("lib/src/main/java/lib/Lib.java") .writeText( """ - plugins { - id 'java-library' - } + package lib; + public class Lib {} """ .trimIndent() ) - path("lib/src/main/java/com/company/Utils.java") + path("lib/build.gradle").writeText(getDefaultProjectBuildScript("java") + lineSeparator) + + path("app/src/main/java/app/App.java") .writeText( """ - package com.company; - - public class Utils { - public static void foo() { - System.out.println("bar"); - } - } + package app; + public class App {} """ .trimIndent() ) path("app/build.gradle") .writeText( """ - import org.gradle.api.artifacts.transform.TransformParameters - import org.gradle.api.artifacts.transform.TransformAction - import org.gradle.api.artifacts.transform.TransformOutputs - import org.gradle.api.artifacts.transform.InputArtifact - import org.gradle.api.file.FileSystemLocation - import org.gradle.api.provider.Provider + ${getDefaultProjectBuildScript("java")} - plugins { - id 'application' - id '$shadowPluginId' - } + abstract class NoOpTransform implements TransformAction { + @InputArtifact + abstract Provider getInputArtifact() - application { - mainClass = 'com.company.Main' - } - - dependencies { - implementation project(':lib') + void transform(TransformOutputs outputs) { + def input = inputArtifact.get().asFile + def output = outputs.file(input.name) + output.bytes = input.bytes + } } - def transformedAttribute = Attribute.of('custom-transformed', Boolean) + def customAttr = Attribute.of('custom-transformed', Boolean) dependencies { + implementation project(':lib') attributesSchema { - attribute(transformedAttribute) + attribute(customAttr) } - artifactTypes.maybeCreate('jar').attributes.attribute(transformedAttribute, false) - } - - dependencies { - registerTransform(CustomTransformAction) { - from.attribute(Attribute.of('artifactType', String), 'jar').attribute(transformedAttribute, false) - to.attribute(Attribute.of('artifactType', String), 'jar').attribute(transformedAttribute, true) + artifactTypes.getByName('jar') { + attributes.attribute(customAttr, false) } - } - - $shadowJarTask { - configurations = [project.configurations.runtimeClasspath] - } - - configurations.runtimeClasspath { - attributes.attribute(transformedAttribute, true) - } - - abstract class CustomTransformAction implements TransformAction { - @InputArtifact abstract Provider getInputArtifact() - - @Override - void transform(TransformOutputs outputs) { - outputs.file(inputArtifact.get().asFile) + registerTransform(NoOpTransform) { + from.attribute(customAttr, false) + to.attribute(customAttr, true) } } - """ - .trimIndent() - ) - path("app/src/main/java/com/company/Main.java") - .writeText( - """ - package com.company; - public class Main { - public static void main(String[] args) { - Utils.foo(); - } + configurations.runtimeClasspath { + attributes.attribute(customAttr, true) } """ - .trimIndent() + .trimIndent() + lineSeparator ) runWithSuccess(":app:$SHADOW_JAR_TASK_NAME") - assertThat(jarPath("app/build/libs/app-all.jar")).useAll { - containsAtLeast("com/company/Main.class", "com/company/Utils.class", manifestEntry) + assertThat(jarPath("app/build/libs/app-1.0-all.jar")).useAll { + containsAtLeast("app/", "app/App.class", "lib/", "lib/Lib.class", *manifestEntries) } }