Skip to content

Commit e4c03e9

Browse files
committed
Update plugins to support api/implementation
Issue gh-9540
1 parent 58a69bb commit e4c03e9

File tree

4 files changed

+50
-22
lines changed

4 files changed

+50
-22
lines changed

buildSrc/src/main/groovy/io/spring/gradle/convention/IntegrationTestPlugin.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ public class IntegrationTestPlugin implements Plugin<Project> {
5454
}
5555
project.configurations {
5656
integrationTestCompile {
57-
extendsFrom testCompile
57+
extendsFrom testCompile, testImplementation
5858
}
5959
integrationTestRuntime {
60-
extendsFrom integrationTestCompile, testRuntime
60+
extendsFrom integrationTestCompile, testRuntime, testRuntimeOnly
6161
}
6262
}
6363

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,61 @@
11
package io.spring.gradle.convention;
22

3-
import org.gradle.api.Action;
3+
4+
import io.spring.gradle.propdeps.PropDepsPlugin;
45
import org.gradle.api.Plugin;
56
import org.gradle.api.Project;
6-
import org.gradle.api.artifacts.Configuration;
7+
import org.gradle.api.artifacts.ConfigurationContainer;
8+
import org.gradle.api.plugins.JavaPlugin;
9+
import org.gradle.api.plugins.JavaTestFixturesPlugin;
10+
import org.gradle.api.plugins.PluginContainer;
11+
import org.gradle.api.publish.PublishingExtension;
12+
import org.gradle.api.publish.maven.MavenPublication;
13+
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
714

815
/**
9-
* https://github.com/gradle/gradle/issues/7576#issuecomment-434637595
16+
* Creates a Management configuration that is appropriate for adding a platform to that is not exposed externally. If
17+
* the JavaPlugin is applied, the compileClasspath, runtimeClasspath, testCompileClasspath, and testRuntimeClasspath
18+
* will extend from it.
1019
* @author Rob Winch
1120
*/
1221
public class ManagementConfigurationPlugin implements Plugin<Project> {
22+
23+
public static final String MANAGEMENT_CONFIGURATION_NAME = "management";
24+
1325
@Override
1426
public void apply(Project project) {
15-
Configuration management = project.getConfigurations()
16-
.create("management", new Action<Configuration>() {
17-
@Override
18-
public void execute(Configuration configuration) {
19-
configuration.setCanBeResolved(false);
20-
configuration.setCanBeConsumed(false);
21-
configuration.setDescription("Used for setting Gradle constraints that impact all configurations that can be resolved");
22-
}
27+
ConfigurationContainer configurations = project.getConfigurations();
28+
configurations.create(MANAGEMENT_CONFIGURATION_NAME, (management) -> {
29+
management.setVisible(false);
30+
management.setCanBeConsumed(false);
31+
management.setCanBeResolved(false);
32+
33+
PluginContainer plugins = project.getPlugins();
34+
plugins.withType(JavaPlugin.class, (javaPlugin) -> {
35+
configurations.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
36+
configurations.getByName(JavaPlugin.COMPILE_CONFIGURATION_NAME).extendsFrom(management);
37+
configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
38+
configurations.getByName(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
39+
configurations.getByName(JavaPlugin.TEST_COMPILE_CONFIGURATION_NAME).extendsFrom(management);
40+
configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
2341
});
24-
project.getConfigurations().all(new Action<Configuration>() {
25-
@Override
26-
public void execute(Configuration configuration) {
27-
if (configuration.isCanBeResolved()) {
28-
configuration.extendsFrom(management);
29-
}
30-
}
42+
plugins.withType(JavaTestFixturesPlugin.class, (javaTestFixturesPlugin) -> {
43+
configurations.getByName("testFixturesCompileClasspath").extendsFrom(management);
44+
configurations.getByName("testFixturesRuntimeClasspath").extendsFrom(management);
45+
});
46+
plugins.withType(MavenPublishPlugin.class, (mavenPublish) -> {
47+
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
48+
publishing.getPublications().withType(MavenPublication.class, (mavenPublication -> {
49+
mavenPublication.versionMapping((versions) ->
50+
versions.allVariants(versionMapping -> versionMapping.fromResolutionResult())
51+
);
52+
}));
53+
});
54+
plugins.withType(PropDepsPlugin.class, (propDepsPlugin -> {
55+
configurations.getByName("optional").extendsFrom(management);
56+
configurations.getByName("provided").extendsFrom(management);
57+
}));
3158
});
3259
}
3360
}
61+

buildSrc/src/main/groovy/io/spring/gradle/convention/TestsConfigurationPlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class TestsConfigurationPlugin implements Plugin<Project> {
3939

4040
private void applyJavaProject(Project project) {
4141
project.configurations {
42-
tests.extendsFrom testRuntime
42+
tests.extendsFrom testRuntime, testRuntimeClasspath
4343
}
4444

4545
project.tasks.create('testJar', Jar) {

core/spring-security-core.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,6 @@ configure(project.tasks.withType(Test)) {
5959
}
6060

6161
Callable<String> springVersion() {
62-
return (Callable<String>) { project.configurations.compile.resolvedConfiguration.resolvedArtifacts
62+
return (Callable<String>) { project.configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts
6363
.find { it.name == 'spring-core' }.moduleVersion.id.version }
6464
}

0 commit comments

Comments
 (0)