Improve error message when BootJar or BootWar has no known main class
Closes gh-12712
This commit is contained in:
@@ -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");
|
||||
* 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.function.Supplier;
|
||||
|
||||
import org.gradle.api.InvalidUserDataException;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
|
||||
@@ -66,7 +67,8 @@ final class MainClassConvention implements Callable<Object> {
|
||||
private String resolveMainClass() {
|
||||
return this.classpathSupplier.get().filter(File::isDirectory).getFiles().stream()
|
||||
.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) {
|
||||
|
||||
@@ -39,7 +39,6 @@ public interface BootArchive extends Task {
|
||||
* @return the main class name
|
||||
*/
|
||||
@Input
|
||||
@Optional
|
||||
String getMainClassName();
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,10 +42,10 @@ public class BootJar extends Jar implements BootArchive {
|
||||
|
||||
private final CopySpec bootInf;
|
||||
|
||||
private FileCollection classpath;
|
||||
|
||||
private String mainClassName;
|
||||
|
||||
private FileCollection classpath;
|
||||
|
||||
/**
|
||||
* Creates a new {@code BootJar} task.
|
||||
*/
|
||||
@@ -76,6 +76,13 @@ public class BootJar extends Jar implements BootArchive {
|
||||
|
||||
@Override
|
||||
public String getMainClassName() {
|
||||
if (this.mainClassName == null) {
|
||||
String manifestStartClass = (String) getManifest().getAttributes()
|
||||
.get("Start-Class");
|
||||
if (manifestStartClass != null) {
|
||||
setMainClassName(manifestStartClass);
|
||||
}
|
||||
}
|
||||
return this.mainClassName;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,6 +68,13 @@ public class BootWar extends War implements BootArchive {
|
||||
|
||||
@Override
|
||||
public String getMainClassName() {
|
||||
if (this.mainClassName == null) {
|
||||
String manifestStartClass = (String) getManifest().getAttributes()
|
||||
.get("Start-Class");
|
||||
if (manifestStartClass != null) {
|
||||
setMainClassName(manifestStartClass);
|
||||
}
|
||||
}
|
||||
return this.mainClassName;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user