Merge branch '2.0.x'
This commit is contained in:
commit
5bd9a445ae
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -22,6 +22,7 @@ import java.util.Objects;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
import org.gradle.api.InvalidUserDataException;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.file.FileCollection;
|
import org.gradle.api.file.FileCollection;
|
||||||
|
|
||||||
|
@ -66,7 +67,8 @@ final class MainClassConvention implements Callable<Object> {
|
||||||
private String resolveMainClass() {
|
private String resolveMainClass() {
|
||||||
return this.classpathSupplier.get().filter(File::isDirectory).getFiles().stream()
|
return this.classpathSupplier.get().filter(File::isDirectory).getFiles().stream()
|
||||||
.map(this::findMainClass).filter(Objects::nonNull).findFirst()
|
.map(this::findMainClass).filter(Objects::nonNull).findFirst()
|
||||||
.orElse(null);
|
.orElseThrow(() -> new InvalidUserDataException(
|
||||||
|
"Main class name has not been configured and it could not be resolved"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String findMainClass(File file) {
|
private String findMainClass(File file) {
|
||||||
|
|
|
@ -39,7 +39,6 @@ public interface BootArchive extends Task {
|
||||||
* @return the main class name
|
* @return the main class name
|
||||||
*/
|
*/
|
||||||
@Input
|
@Input
|
||||||
@Optional
|
|
||||||
String getMainClassName();
|
String getMainClassName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -42,10 +42,10 @@ public class BootJar extends Jar implements BootArchive {
|
||||||
|
|
||||||
private final CopySpec bootInf;
|
private final CopySpec bootInf;
|
||||||
|
|
||||||
private FileCollection classpath;
|
|
||||||
|
|
||||||
private String mainClassName;
|
private String mainClassName;
|
||||||
|
|
||||||
|
private FileCollection classpath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new {@code BootJar} task.
|
* Creates a new {@code BootJar} task.
|
||||||
*/
|
*/
|
||||||
|
@ -76,6 +76,13 @@ public class BootJar extends Jar implements BootArchive {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMainClassName() {
|
public String getMainClassName() {
|
||||||
|
if (this.mainClassName == null) {
|
||||||
|
String manifestStartClass = (String) getManifest().getAttributes()
|
||||||
|
.get("Start-Class");
|
||||||
|
if (manifestStartClass != null) {
|
||||||
|
setMainClassName(manifestStartClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
return this.mainClassName;
|
return this.mainClassName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,13 @@ public class BootWar extends War implements BootArchive {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMainClassName() {
|
public String getMainClassName() {
|
||||||
|
if (this.mainClassName == null) {
|
||||||
|
String manifestStartClass = (String) getManifest().getAttributes()
|
||||||
|
.get("Start-Class");
|
||||||
|
if (manifestStartClass != null) {
|
||||||
|
setMainClassName(manifestStartClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
return this.mainClassName;
|
return this.mainClassName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -104,6 +104,14 @@ public class JavaPluginActionIntegrationTests {
|
||||||
assertThat(result.task(":jar").getOutcome()).isEqualTo(TaskOutcome.SKIPPED);
|
assertThat(result.task(":jar").getOutcome()).isEqualTo(TaskOutcome.SKIPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void errorMessageIsHelpfulWhenMainClassCannotBeResolved() {
|
||||||
|
BuildResult result = this.gradleBuild.buildAndFail("build", "-PapplyJavaPlugin");
|
||||||
|
assertThat(result.task(":bootJar").getOutcome()).isEqualTo(TaskOutcome.FAILED);
|
||||||
|
assertThat(result.getOutput()).contains(
|
||||||
|
"Main class name has not been configured and it could not be resolved");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void jarAndBootJarCanBothBeBuilt() {
|
public void jarAndBootJarCanBothBeBuilt() {
|
||||||
BuildResult result = this.gradleBuild.build("assemble");
|
BuildResult result = this.gradleBuild.build("assemble");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -72,4 +72,12 @@ public class WarPluginActionIntegrationTests {
|
||||||
this.gradleBuild.getProjectDir().getName() + "-boot.war"));
|
this.gradleBuild.getProjectDir().getName() + "-boot.war"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void errorMessageIsHelpfulWhenMainClassCannotBeResolved() {
|
||||||
|
BuildResult result = this.gradleBuild.buildAndFail("build", "-PapplyWarPlugin");
|
||||||
|
assertThat(result.task(":bootWar").getOutcome()).isEqualTo(TaskOutcome.FAILED);
|
||||||
|
assertThat(result.getOutput()).contains(
|
||||||
|
"Main class name has not been configured and it could not be resolved");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue