Ignore mainClassName property when its value is null

Closes gh-9892
This commit is contained in:
Andy Wilkinson 2017-07-28 14:44:32 +01:00
parent c2459fce47
commit 36120d729a
3 changed files with 38 additions and 9 deletions

View File

@ -48,7 +48,10 @@ final class MainClassConvention implements Callable<Object> {
@Override
public Object call() throws Exception {
if (this.project.hasProperty("mainClassName")) {
return this.project.property("mainClassName");
Object mainClassName = this.project.property("mainClassName");
if (mainClassName != null) {
return mainClassName;
}
}
return resolveMainClass();
}

View File

@ -44,10 +44,7 @@ public class BootRunIntegrationTests {
@Test
public void basicExecution() throws IOException {
File output = new File(this.gradleBuild.getProjectDir(),
"src/main/java/com/example");
output.mkdirs();
FileSystemUtils.copyRecursively(new File("src/test/java/com/example"), output);
copyApplication();
new File(this.gradleBuild.getProjectDir(), "src/main/resources").mkdirs();
BuildResult result = this.gradleBuild.build("bootRun");
assertThat(result.task(":bootRun").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
@ -58,10 +55,7 @@ public class BootRunIntegrationTests {
@Test
public void sourceResourcesCanBeUsed() throws IOException {
File output = new File(this.gradleBuild.getProjectDir(),
"src/main/java/com/example");
output.mkdirs();
FileSystemUtils.copyRecursively(new File("src/test/java/com/example"), output);
copyApplication();
BuildResult result = this.gradleBuild.build("bootRun");
assertThat(result.task(":bootRun").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
assertThat(result.getOutput()).contains("1. " + urlOf("src/main/resources"));
@ -78,6 +72,16 @@ public class BootRunIntegrationTests {
.contains("Main class name = com.example.CustomMainClass");
}
@Test
public void applicationPluginMainClassNameIsNotUsedWhenItIsNull() throws IOException {
copyApplication();
BuildResult result = this.gradleBuild.build("echoMainClassName");
assertThat(result.task(":echoMainClassName").getOutcome())
.isEqualTo(TaskOutcome.SUCCESS);
assertThat(result.getOutput())
.contains("Main class name = com.example.BootRunApplication");
}
@Test
public void applicationPluginJvmArgumentsAreUsed() throws IOException {
BuildResult result = this.gradleBuild.build("echoJvmArguments");
@ -87,6 +91,13 @@ public class BootRunIntegrationTests {
.contains("JVM arguments = [-Dcom.foo=bar, -Dcom.bar=baz]");
}
private void copyApplication() throws IOException {
File output = new File(this.gradleBuild.getProjectDir(),
"src/main/java/com/example");
output.mkdirs();
FileSystemUtils.copyRecursively(new File("src/test/java/com/example"), output);
}
private String urlOf(String path) throws IOException {
return new File(this.gradleBuild.getProjectDir().getCanonicalFile(), path).toURI()
.toURL().toString();

View File

@ -0,0 +1,15 @@
buildscript {
dependencies {
classpath files(pluginClasspath.split(','))
}
}
apply plugin: 'application'
apply plugin: 'org.springframework.boot'
task echoMainClassName {
dependsOn compileJava
doLast {
println 'Main class name = ' + bootRun.main
}
}