Skip to content

Commit 1b27a7b

Browse files
erichaagdevbclozel
authored andcommitted
Remove explicit cross project task dependency
Previously, the runtimeHintsTest task configuration made a cross project task reference to obtain the jar path of spring-core-test to use in the -javaagent argument. With this change, a dedicated configuration exists to resolve the project artifact without the need to reference the jar task of spring-core-test. Closes gh-30838
1 parent d40c10e commit 1b27a7b

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,16 @@
1616

1717
package org.springframework.build.hint;
1818

19+
import org.gradle.api.JavaVersion;
1920
import org.gradle.api.Plugin;
2021
import org.gradle.api.Project;
22+
import org.gradle.api.artifacts.Configuration;
23+
import org.gradle.api.attributes.Bundling;
24+
import org.gradle.api.attributes.Category;
25+
import org.gradle.api.attributes.LibraryElements;
26+
import org.gradle.api.attributes.Usage;
27+
import org.gradle.api.attributes.java.TargetJvmVersion;
2128
import org.gradle.api.plugins.JavaPlugin;
22-
import org.gradle.api.tasks.TaskProvider;
23-
import org.gradle.api.tasks.bundling.Jar;
2429
import org.gradle.api.tasks.testing.Test;
2530

2631
import java.util.Collections;
@@ -35,6 +40,7 @@ public class RuntimeHintsAgentPlugin implements Plugin<Project> {
3540

3641
public static final String RUNTIMEHINTS_TEST_TASK = "runtimeHintsTest";
3742
private static final String EXTENSION_NAME = "runtimeHintsAgent";
43+
private static final String CONFIGURATION_NAME = "testRuntimeHintsAgentJar";
3844

3945

4046
@Override
@@ -52,6 +58,7 @@ public void apply(Project project) {
5258
test.getJvmArgumentProviders().add(createRuntimeHintsAgentArgumentProvider(project, agentExtension));
5359
});
5460
project.getTasks().getByName("check", task -> task.dependsOn(agentTest));
61+
project.getDependencies().add(CONFIGURATION_NAME, project.project(":spring-core-test"));
5562
});
5663
}
5764

@@ -64,11 +71,24 @@ private static RuntimeHintsAgentExtension createRuntimeHintsAgentExtension(Proje
6471

6572
private static RuntimeHintsAgentArgumentProvider createRuntimeHintsAgentArgumentProvider(
6673
Project project, RuntimeHintsAgentExtension agentExtension) {
67-
TaskProvider<Jar> jar = project.getRootProject().project("spring-core-test").getTasks().named("jar", Jar.class);
6874
RuntimeHintsAgentArgumentProvider agentArgumentProvider = project.getObjects().newInstance(RuntimeHintsAgentArgumentProvider.class);
69-
agentArgumentProvider.getAgentJar().from(jar);
75+
agentArgumentProvider.getAgentJar().from(createRuntimeHintsAgentConfiguration(project));
7076
agentArgumentProvider.getIncludedPackages().set(agentExtension.getIncludedPackages());
7177
agentArgumentProvider.getExcludedPackages().set(agentExtension.getExcludedPackages());
7278
return agentArgumentProvider;
7379
}
80+
81+
private static Configuration createRuntimeHintsAgentConfiguration(Project project) {
82+
return project.getConfigurations().create(CONFIGURATION_NAME, configuration -> {
83+
configuration.setCanBeConsumed(false);
84+
configuration.setTransitive(false); // Only the built artifact is required
85+
configuration.attributes(attributes -> {
86+
attributes.attribute(Bundling.BUNDLING_ATTRIBUTE, project.getObjects().named(Bundling.class, Bundling.EXTERNAL));
87+
attributes.attribute(Category.CATEGORY_ATTRIBUTE, project.getObjects().named(Category.class, Category.LIBRARY));
88+
attributes.attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.getObjects().named(LibraryElements.class, LibraryElements.JAR));
89+
attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, Integer.valueOf(JavaVersion.current().getMajorVersion()));
90+
attributes.attribute(Usage.USAGE_ATTRIBUTE, project.getObjects().named(Usage.class, Usage.JAVA_RUNTIME));
91+
});
92+
});
93+
}
7494
}

0 commit comments

Comments
 (0)