Fix CP for namingConventions when gradle home has spaces
* Fix CP for namingConventions when gradle home has spaces
Closes
Probably not Windows specific, just not common to have spaces on Linux.
@@ -16,6 +16,8 @@ import org.gradle.api.tasks.SourceSetContainer;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.util.Objects;
/**
@@ -30,16 +32,25 @@ public class NamingConventionsTask extends LoggedExec {
final Project project = getProject();
SourceSetContainer sourceSets = getJavaSourceSets();
- final FileCollection classpath = project.files(
+ final FileCollection classpath;
+ try {
+ URL location = NamingConventionsCheck.class.getProtectionDomain().getCodeSource().getLocation();
+ if (location.getProtocol().equals("file") == false) {
+ throw new GradleException("Unexpected location for NamingConventionCheck class: "+ location);
+ }
+ classpath = project.files(
// This works because the class only depends on one class from junit that will be available from the
// tests compile classpath. It's the most straight forward way of telling Java where to find the main
// class.
- NamingConventionsCheck.class.getProtectionDomain().getCodeSource().getLocation().getPath(),
+ location.toURI().getPath(),
// the tests to be loaded
checkForTestsInMain ? sourceSets.getByName("main").getRuntimeClasspath() : project.files(),
sourceSets.getByName("test").getCompileClasspath(),
sourceSets.getByName("test").getOutput()
);
+ } catch (URISyntaxException e) {
+ throw new AssertionError(e);
+ }
dependsOn(project.getTasks().matching(it -> "testCompileClasspath".equals(it.getName())));
getInputs().files(classpath);
@@ -111,10 +122,6 @@ public class NamingConventionsTask extends LoggedExec {
this.successMarker = successMarker;
}
- public boolean getSkipIntegTestInDisguise() {
- return skipIntegTestInDisguise;
- }
-
public boolean isSkipIntegTestInDisguise() {
return skipIntegTestInDisguise;
}
