Skip to content

Commit

Permalink
Correct ordering of resources on the classpath. Fixes gh-1981 (#2060)
Browse files Browse the repository at this point in the history
  • Loading branch information
shanman190 committed Dec 7, 2023
1 parent deb15d7 commit d5147e7
Showing 1 changed file with 7 additions and 5 deletions.
Expand Up @@ -26,8 +26,8 @@
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;
Expand Down Expand Up @@ -128,6 +128,8 @@ public void apply(Project 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 -> {
Expand All @@ -139,11 +141,11 @@ private SourceSet configureSourceSets(ContractVerifierExtension extension, JavaP
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;
}

Expand Down

0 comments on commit d5147e7

Please sign in to comment.