Ver Fonte

Update plugins to support api/implementation

Issue gh-9540
Rob Winch há 4 anos atrás
pai
commit
e4c03e9e5a

+ 2 - 2
buildSrc/src/main/groovy/io/spring/gradle/convention/IntegrationTestPlugin.groovy

@@ -54,10 +54,10 @@ public class IntegrationTestPlugin implements Plugin<Project> {
 		}
 		project.configurations {
 			integrationTestCompile {
-				extendsFrom testCompile
+				extendsFrom testCompile, testImplementation
 			}
 			integrationTestRuntime {
-				extendsFrom integrationTestCompile, testRuntime
+				extendsFrom integrationTestCompile, testRuntime, testRuntimeOnly
 			}
 		}
 

+ 46 - 18
buildSrc/src/main/groovy/io/spring/gradle/convention/ManagementConfigurationPlugin.java

@@ -1,33 +1,61 @@
 package io.spring.gradle.convention;
 
-import org.gradle.api.Action;
+
+import io.spring.gradle.propdeps.PropDepsPlugin;
 import org.gradle.api.Plugin;
 import org.gradle.api.Project;
-import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.artifacts.ConfigurationContainer;
+import org.gradle.api.plugins.JavaPlugin;
+import org.gradle.api.plugins.JavaTestFixturesPlugin;
+import org.gradle.api.plugins.PluginContainer;
+import org.gradle.api.publish.PublishingExtension;
+import org.gradle.api.publish.maven.MavenPublication;
+import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
 
 /**
- * https://github.com/gradle/gradle/issues/7576#issuecomment-434637595
+ * Creates a Management configuration that is appropriate for adding a platform to that is not exposed externally. If
+ * the JavaPlugin is applied, the compileClasspath, runtimeClasspath, testCompileClasspath, and testRuntimeClasspath
+ * will extend from it.
  * @author Rob Winch
  */
 public class ManagementConfigurationPlugin implements Plugin<Project> {
+
+	public static final String MANAGEMENT_CONFIGURATION_NAME = "management";
+
 	@Override
 	public void apply(Project project) {
-		Configuration management = project.getConfigurations()
-			.create("management", new Action<Configuration>() {
-				@Override
-				public void execute(Configuration configuration) {
-					configuration.setCanBeResolved(false);
-					configuration.setCanBeConsumed(false);
-					configuration.setDescription("Used for setting Gradle constraints that impact all configurations that can be resolved");
-				}
+		ConfigurationContainer configurations = project.getConfigurations();
+		configurations.create(MANAGEMENT_CONFIGURATION_NAME, (management) -> {
+			management.setVisible(false);
+			management.setCanBeConsumed(false);
+			management.setCanBeResolved(false);
+
+			PluginContainer plugins = project.getPlugins();
+			plugins.withType(JavaPlugin.class, (javaPlugin) -> {
+				configurations.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
+				configurations.getByName(JavaPlugin.COMPILE_CONFIGURATION_NAME).extendsFrom(management);
+				configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
+				configurations.getByName(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
+				configurations.getByName(JavaPlugin.TEST_COMPILE_CONFIGURATION_NAME).extendsFrom(management);
+				configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME).extendsFrom(management);
 			});
-		project.getConfigurations().all(new Action<Configuration>() {
-			@Override
-			public void execute(Configuration configuration) {
-				if (configuration.isCanBeResolved()) {
-					configuration.extendsFrom(management);
-				}
-			}
+			plugins.withType(JavaTestFixturesPlugin.class, (javaTestFixturesPlugin) -> {
+				configurations.getByName("testFixturesCompileClasspath").extendsFrom(management);
+				configurations.getByName("testFixturesRuntimeClasspath").extendsFrom(management);
+			});
+			plugins.withType(MavenPublishPlugin.class, (mavenPublish) -> {
+				PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
+				publishing.getPublications().withType(MavenPublication.class, (mavenPublication -> {
+					mavenPublication.versionMapping((versions) ->
+							versions.allVariants(versionMapping -> versionMapping.fromResolutionResult())
+					);
+				}));
+			});
+			plugins.withType(PropDepsPlugin.class, (propDepsPlugin -> {
+				configurations.getByName("optional").extendsFrom(management);
+				configurations.getByName("provided").extendsFrom(management);
+			}));
 		});
 	}
 }
+

+ 1 - 1
buildSrc/src/main/groovy/io/spring/gradle/convention/TestsConfigurationPlugin.groovy

@@ -39,7 +39,7 @@ public class TestsConfigurationPlugin implements Plugin<Project> {
 
 	private void applyJavaProject(Project project) {
 		project.configurations {
-			tests.extendsFrom testRuntime
+			tests.extendsFrom testRuntime, testRuntimeClasspath
 		}
 
 		project.tasks.create('testJar', Jar) {

+ 1 - 1
core/spring-security-core.gradle

@@ -59,6 +59,6 @@ configure(project.tasks.withType(Test)) {
 }
 
 Callable<String> springVersion() {
-	return  (Callable<String>) { project.configurations.compile.resolvedConfiguration.resolvedArtifacts
+	return  (Callable<String>) { project.configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts
     .find { it.name == 'spring-core' }.moduleVersion.id.version }
 }