From ada1c68b0722a0e0afb278ec07fdff18085a35e7 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 20:50:07 +0800 Subject: [PATCH 1/9] Revert "Revert some defer changes" This reverts commit 4cbbd4dcf6442bf7853832a38f868957c319115c. --- .../plugins/shadow/ShadowJavaPlugin.groovy | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index f1f2800e4..c37462ce6 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -11,6 +11,7 @@ import org.gradle.api.plugins.JavaPlugin import org.gradle.api.component.AdhocComponentWithVariants import org.gradle.api.component.SoftwareComponentFactory import org.gradle.api.tasks.SourceSetContainer +import org.gradle.api.tasks.TaskProvider import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin import javax.inject.Inject @@ -29,29 +30,26 @@ class ShadowJavaPlugin implements Plugin { @Override void apply(Project project) { - configureShadowTask(project) + def shadowTaskProvider = configureShadowTask(project) project.configurations.compileClasspath.extendsFrom project.configurations.shadow - project.configurations { - shadowRuntimeElements { - canBeConsumed = true - canBeResolved = false - attributes { - it.attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage, Usage.JAVA_RUNTIME)) - it.attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category, Category.LIBRARY)) - it.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements, LibraryElements.JAR)) - it.attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling, Bundling.SHADOWED)) - } - outgoing.artifact(project.tasks.named(SHADOW_JAR_TASK_NAME)) + project.configurations.register("shadowRuntimeElements") { + it.extendsFrom(project.configurations.shadow) + it.canBeConsumed = true + it.canBeResolved = false + it.attributes { + it.attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage, Usage.JAVA_RUNTIME)) + it.attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category, Category.LIBRARY)) + it.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements, LibraryElements.JAR)) + it.attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling, Bundling.SHADOWED)) } + it.outgoing.artifact(shadowTaskProvider) } - project.configurations.shadowRuntimeElements.extendsFrom project.configurations.shadow - - project.components.java { - addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - mapToOptional() // make it a Maven optional dependency + project.components.named("java") { AdhocComponentWithVariants it -> + it.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + it.mapToOptional() } } @@ -75,9 +73,9 @@ class ShadowJavaPlugin implements Plugin { } } - protected static void configureShadowTask(Project project) { + protected static TaskProvider configureShadowTask(Project project) { SourceSetContainer sourceSets = project.extensions.getByType(SourceSetContainer) - project.tasks.register(SHADOW_JAR_TASK_NAME, ShadowJar) { shadow -> + def taskProvider = project.tasks.register(SHADOW_JAR_TASK_NAME, ShadowJar) { shadow -> shadow.group = SHADOW_GROUP shadow.description = 'Create a combined JAR of project and runtime dependencies' shadow.archiveClassifier.set("all") @@ -98,6 +96,7 @@ class ShadowJavaPlugin implements Plugin { project.configurations.runtimeClasspath : project.configurations.runtime] shadow.exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'module-info.class') } - project.artifacts.add(ShadowBasePlugin.CONFIGURATION_NAME, project.tasks.named(SHADOW_JAR_TASK_NAME)) + project.artifacts.add(ShadowBasePlugin.CONFIGURATION_NAME, taskProvider) + return taskProvider } } From 9c2a3636cae64291c033e5e270b7d5e0a0407ae2 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 20:59:15 +0800 Subject: [PATCH 2/9] Cleanups --- .../shadow/ShadowApplicationPlugin.groovy | 4 ++-- .../plugins/shadow/ShadowBasePlugin.groovy | 2 +- .../plugins/shadow/ShadowJavaPlugin.groovy | 23 +++++++++++-------- .../gradle/plugins/shadow/ShadowPlugin.groovy | 4 ++-- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.groovy index f579c8fd2..7a57952ae 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowApplicationPlugin.groovy @@ -49,7 +49,7 @@ class ShadowApplicationPlugin implements Plugin { jar.configure { jar -> jar.inputs.property('mainClassName', classNameProvider) jar.doFirst { - manifest.attributes 'Main-Class': classNameProvider.get() + jar.manifest.attributes 'Main-Class': classNameProvider.get() } } } @@ -126,7 +126,7 @@ class ShadowApplicationPlugin implements Plugin { } into("bin") { from(startScripts) - filePermissions { unix(493) } + filePermissions { it.unix(493) } } } diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy index 0c9f7f372..8121e123f 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy @@ -21,7 +21,7 @@ class ShadowBasePlugin implements Plugin { project.tasks.register(KnowsTask.NAME, KnowsTask) { knows -> knows.group = ShadowJavaPlugin.SHADOW_GROUP - knows.description = DESC + knows.description = KnowsTask.DESC } } diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index c37462ce6..1938a436b 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -7,11 +7,12 @@ import org.gradle.api.attributes.Bundling import org.gradle.api.attributes.Category import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.Usage -import org.gradle.api.plugins.JavaPlugin import org.gradle.api.component.AdhocComponentWithVariants import org.gradle.api.component.SoftwareComponentFactory +import org.gradle.api.plugins.JavaPlugin import org.gradle.api.tasks.SourceSetContainer import org.gradle.api.tasks.TaskProvider +import org.gradle.jvm.tasks.Jar import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin import javax.inject.Inject @@ -35,7 +36,7 @@ class ShadowJavaPlugin implements Plugin { project.configurations.compileClasspath.extendsFrom project.configurations.shadow project.configurations.register("shadowRuntimeElements") { - it.extendsFrom(project.configurations.shadow) + it.extendsFrom(project.configurations.getByName(ShadowBasePlugin.CONFIGURATION_NAME)) it.canBeConsumed = true it.canBeResolved = false it.attributes { @@ -47,7 +48,7 @@ class ShadowJavaPlugin implements Plugin { it.outgoing.artifact(shadowTaskProvider) } - project.components.named("java") { AdhocComponentWithVariants it -> + project.components.named("java", AdhocComponentWithVariants) { it.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { it.mapToOptional() } @@ -80,20 +81,24 @@ class ShadowJavaPlugin implements Plugin { shadow.description = 'Create a combined JAR of project and runtime dependencies' shadow.archiveClassifier.set("all") shadow.manifest.inheritFrom(project.tasks.jar.manifest) - def libsProvider = project.provider { -> [project.tasks.jar.manifest.attributes.get('Class-Path')] } - def files = project.objects.fileCollection().from { -> - project.configurations.findByName(ShadowBasePlugin.CONFIGURATION_NAME) + def libsProvider = project.provider { -> + [ + (project.tasks.getByName('jar') as Jar).manifest.attributes.get('Class-Path') + ] } + def files = project.objects.fileCollection() + .from(project.configurations.named(ShadowBasePlugin.CONFIGURATION_NAME)) shadow.doFirst { if (!files.empty) { def libs = libsProvider.get() libs.addAll files.collect { "${it.name}" } - manifest.attributes 'Class-Path': libs.findAll { it }.join(' ') + shadow.manifest.attributes 'Class-Path': libs.findAll { it }.join(' ') } } shadow.from(sourceSets.main.output) - shadow.configurations = [project.configurations.findByName('runtimeClasspath') ? - project.configurations.runtimeClasspath : project.configurations.runtime] + shadow.configurations = [ + project.configurations.findByName('runtimeClasspath') ?: project.configurations.runtime + ] shadow.exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'module-info.class') } project.artifacts.add(ShadowBasePlugin.CONFIGURATION_NAME, taskProvider) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy index 4b2262f97..2610483c8 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy @@ -14,10 +14,10 @@ class ShadowPlugin implements Plugin { project.with { plugins.apply(ShadowBasePlugin) plugins.apply(LegacyShadowPlugin) - plugins.withType(JavaPlugin) { + plugins.withType(JavaPlugin).configureEach { plugins.apply(ShadowJavaPlugin) } - plugins.withType(ApplicationPlugin) { + plugins.withType(ApplicationPlugin).configureEach { plugins.apply(ShadowApplicationPlugin) } From 584217274be9abc05b51a50de9125446ae5fde81 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 21:05:09 +0800 Subject: [PATCH 3/9] Extract COMPONENT_NAME --- .../jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy | 1 + .../jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy index 8121e123f..ccb64cf5c 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowBasePlugin.groovy @@ -10,6 +10,7 @@ class ShadowBasePlugin implements Plugin { public static final String EXTENSION_NAME = 'shadow' public static final String CONFIGURATION_NAME = 'shadow' + public static final String COMPONENT_NAME = 'shadow' @Override void apply(Project project) { diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index 1938a436b..08e219c4f 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -54,9 +54,9 @@ class ShadowJavaPlugin implements Plugin { } } - AdhocComponentWithVariants shadow = softwareComponentFactory.adhoc("shadow") - project.components.add(shadow) - shadow.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + AdhocComponentWithVariants shadowComponent = softwareComponentFactory.adhoc(ShadowBasePlugin.COMPONENT_NAME) + project.components.add(shadowComponent) + shadowComponent.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { it.mapToMavenScope("runtime") } From 34ea72b91cbb226efb724d64783761649947fa2a Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 21:10:20 +0800 Subject: [PATCH 4/9] Reuse shadowConfiguration --- .../gradle/plugins/shadow/ShadowJavaPlugin.groovy | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index 08e219c4f..ec095ef0c 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -3,6 +3,7 @@ package com.github.jengelman.gradle.plugins.shadow import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.Bundling import org.gradle.api.attributes.Category import org.gradle.api.attributes.LibraryElements @@ -31,12 +32,13 @@ class ShadowJavaPlugin implements Plugin { @Override void apply(Project project) { - def shadowTaskProvider = configureShadowTask(project) + def shadowConfiguration = project.configurations.getByName(ShadowBasePlugin.CONFIGURATION_NAME) + def shadowTaskProvider = configureShadowTask(project, shadowConfiguration) - project.configurations.compileClasspath.extendsFrom project.configurations.shadow + project.configurations.compileClasspath.extendsFrom shadowConfiguration project.configurations.register("shadowRuntimeElements") { - it.extendsFrom(project.configurations.getByName(ShadowBasePlugin.CONFIGURATION_NAME)) + it.extendsFrom(shadowConfiguration) it.canBeConsumed = true it.canBeResolved = false it.attributes { @@ -74,7 +76,7 @@ class ShadowJavaPlugin implements Plugin { } } - protected static TaskProvider configureShadowTask(Project project) { + protected static TaskProvider configureShadowTask(Project project, Configuration shadowConfiguration) { SourceSetContainer sourceSets = project.extensions.getByType(SourceSetContainer) def taskProvider = project.tasks.register(SHADOW_JAR_TASK_NAME, ShadowJar) { shadow -> shadow.group = SHADOW_GROUP @@ -86,8 +88,7 @@ class ShadowJavaPlugin implements Plugin { (project.tasks.getByName('jar') as Jar).manifest.attributes.get('Class-Path') ] } - def files = project.objects.fileCollection() - .from(project.configurations.named(ShadowBasePlugin.CONFIGURATION_NAME)) + def files = project.objects.fileCollection().from(shadowConfiguration) shadow.doFirst { if (!files.empty) { def libs = libsProvider.get() @@ -101,7 +102,7 @@ class ShadowJavaPlugin implements Plugin { ] shadow.exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'module-info.class') } - project.artifacts.add(ShadowBasePlugin.CONFIGURATION_NAME, taskProvider) + project.artifacts.add(shadowConfiguration.name, taskProvider) return taskProvider } } From 1062267c15653686727a81eb9643908a62d077fd Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 21:38:56 +0800 Subject: [PATCH 5/9] Revert configureEach --- .../jengelman/gradle/plugins/shadow/ShadowPlugin.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy index 2610483c8..4b2262f97 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowPlugin.groovy @@ -14,10 +14,10 @@ class ShadowPlugin implements Plugin { project.with { plugins.apply(ShadowBasePlugin) plugins.apply(LegacyShadowPlugin) - plugins.withType(JavaPlugin).configureEach { + plugins.withType(JavaPlugin) { plugins.apply(ShadowJavaPlugin) } - plugins.withType(ApplicationPlugin).configureEach { + plugins.withType(ApplicationPlugin) { plugins.apply(ShadowApplicationPlugin) } From 890d887d2b9bf4d18a774f749b5fdd61b1402446 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 22:16:49 +0800 Subject: [PATCH 6/9] Replace hardcodes --- .../gradle/plugins/shadow/ShadowJavaPlugin.groovy | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index ec095ef0c..77d20e0c7 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -35,7 +35,9 @@ class ShadowJavaPlugin implements Plugin { def shadowConfiguration = project.configurations.getByName(ShadowBasePlugin.CONFIGURATION_NAME) def shadowTaskProvider = configureShadowTask(project, shadowConfiguration) - project.configurations.compileClasspath.extendsFrom shadowConfiguration + project.configurations.named(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME) { + it.extendsFrom(shadowConfiguration) + } project.configurations.register("shadowRuntimeElements") { it.extendsFrom(shadowConfiguration) @@ -98,7 +100,8 @@ class ShadowJavaPlugin implements Plugin { } shadow.from(sourceSets.main.output) shadow.configurations = [ - project.configurations.findByName('runtimeClasspath') ?: project.configurations.runtime + project.configurations.findByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME) ?: + project.configurations.runtime, ] shadow.exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'module-info.class') } From 8ee6bea2a92efdaaca9f1b675f8101a606949125 Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 18 Sep 2024 10:56:10 +0800 Subject: [PATCH 7/9] Reuse shadowRuntimeElements --- .../gradle/plugins/shadow/ShadowJavaPlugin.groovy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index 77d20e0c7..5ae915f6b 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -22,6 +22,7 @@ class ShadowJavaPlugin implements Plugin { public static final String SHADOW_JAR_TASK_NAME = 'shadowJar' public static final String SHADOW_GROUP = 'Shadow' + public static final String SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME = 'shadowRuntimeElements' private final SoftwareComponentFactory softwareComponentFactory @@ -39,7 +40,7 @@ class ShadowJavaPlugin implements Plugin { it.extendsFrom(shadowConfiguration) } - project.configurations.register("shadowRuntimeElements") { + def shadowRuntimeElements = project.configurations.create(SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME) { it.extendsFrom(shadowConfiguration) it.canBeConsumed = true it.canBeResolved = false @@ -53,14 +54,14 @@ class ShadowJavaPlugin implements Plugin { } project.components.named("java", AdhocComponentWithVariants) { - it.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + it.addVariantsFromConfiguration(shadowRuntimeElements) { it.mapToOptional() } } AdhocComponentWithVariants shadowComponent = softwareComponentFactory.adhoc(ShadowBasePlugin.COMPONENT_NAME) project.components.add(shadowComponent) - shadowComponent.addVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + shadowComponent.addVariantsFromConfiguration(shadowRuntimeElements) { it.mapToMavenScope("runtime") } From b8ea49a7525700b8d2ee377d0c916e5f4e115ff3 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 17 Sep 2024 22:05:26 +0800 Subject: [PATCH 8/9] Reuse jarTask --- .../gradle/plugins/shadow/ShadowJavaPlugin.groovy | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index 5ae915f6b..dbb71bb90 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -81,22 +81,18 @@ class ShadowJavaPlugin implements Plugin { protected static TaskProvider configureShadowTask(Project project, Configuration shadowConfiguration) { SourceSetContainer sourceSets = project.extensions.getByType(SourceSetContainer) + def jarTask = project.tasks.named(JavaPlugin.JAR_TASK_NAME, Jar) def taskProvider = project.tasks.register(SHADOW_JAR_TASK_NAME, ShadowJar) { shadow -> shadow.group = SHADOW_GROUP shadow.description = 'Create a combined JAR of project and runtime dependencies' shadow.archiveClassifier.set("all") - shadow.manifest.inheritFrom(project.tasks.jar.manifest) - def libsProvider = project.provider { -> - [ - (project.tasks.getByName('jar') as Jar).manifest.attributes.get('Class-Path') - ] - } + shadow.manifest.inheritFrom(jarTask.get().manifest) + def attrProvider = jarTask.map { it.manifest.attributes.get('Class-Path') } def files = project.objects.fileCollection().from(shadowConfiguration) shadow.doFirst { if (!files.empty) { - def libs = libsProvider.get() - libs.addAll files.collect { "${it.name}" } - shadow.manifest.attributes 'Class-Path': libs.findAll { it }.join(' ') + def attrs = [attrProvider.getOrElse('')] + files.collect { it.name } + shadow.manifest.attributes 'Class-Path': attrs.join(' ').trim() } } shadow.from(sourceSets.main.output) From 5732a9f2fd6834f64b59bed6c634ad42ff547dad Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 18 Sep 2024 19:28:00 +0800 Subject: [PATCH 9/9] Add context --- .../jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy index dbb71bb90..7a904a218 100644 --- a/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy +++ b/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/ShadowJavaPlugin.groovy @@ -40,7 +40,7 @@ class ShadowJavaPlugin implements Plugin { it.extendsFrom(shadowConfiguration) } - def shadowRuntimeElements = project.configurations.create(SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME) { + def shadowRuntimeElements = project.configurations.create(SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME) { Configuration it -> it.extendsFrom(shadowConfiguration) it.canBeConsumed = true it.canBeResolved = false