Correct ordering of resources on the classpath. Fixes gh-1981 (#2060)

This commit is contained in:
Shannon Pamperl
2023-12-07 03:07:21 -06:00
committed by GitHub
parent deb15d732a
commit d5147e7528

View File

@@ -26,8 +26,8 @@ import org.gradle.api.attributes.LibraryElements;
import org.gradle.api.attributes.Usage;
import org.gradle.api.file.Directory;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.FileCollection;
import org.gradle.api.internal.HasConvention;
import org.gradle.api.model.ObjectFactory;
import org.gradle.api.plugins.GroovyPlugin;
import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.plugins.JavaPlugin;
@@ -128,6 +128,8 @@ public class SpringCloudContractVerifierGradlePlugin implements Plugin<Project>
private SourceSet configureSourceSets(ContractVerifierExtension extension, JavaPluginConvention javaConvention) {
SourceSetContainer sourceSets = javaConvention.getSourceSets();
ConfigurationContainer configurations = project.getConfigurations();
ObjectFactory objects = project.getObjects();
SourceSet contractTest = sourceSets.create(CONTRACT_TEST_SOURCE_SET_NAME);
contractTest.getJava().srcDirs(extension.getGeneratedTestJavaSourcesDir());
project.getPlugins().withType(GroovyPlugin.class, groovyPlugin -> {
@@ -139,11 +141,11 @@ public class SpringCloudContractVerifierGradlePlugin implements Plugin<Project>
SourceSetOutput mainOutput = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).getOutput();
SourceSetOutput testOutput = sourceSets.getByName(SourceSet.TEST_SOURCE_SET_NAME).getOutput();
FileCollection compileClasspath = contractTest.getCompileClasspath();
contractTest.setCompileClasspath(compileClasspath.plus(mainOutput).plus(testOutput));
Configuration contractTestCompileClasspathConfiguration = configurations.getByName(contractTest.getCompileClasspathConfigurationName());
Configuration contractTestRuntimeClasspathConfiguration = configurations.getByName(contractTest.getRuntimeClasspathConfigurationName());
FileCollection runtimeClasspath = contractTest.getRuntimeClasspath();
contractTest.setRuntimeClasspath(runtimeClasspath.plus(mainOutput).plus(testOutput));
contractTest.setCompileClasspath(objects.fileCollection().from(testOutput, mainOutput, contractTestCompileClasspathConfiguration));
contractTest.setRuntimeClasspath(objects.fileCollection().from(contractTest.getOutput(), testOutput, mainOutput, contractTestRuntimeClasspathConfiguration));
return contractTest;
}