Commit c808de00 authored by Andy Wilkinson's avatar Andy Wilkinson

Allow custom repackage task to be used without a global main class

Closes gh-5956
parent 76cd45e7
...@@ -159,6 +159,17 @@ public class RepackagingTests { ...@@ -159,6 +159,17 @@ public class RepackagingTests {
assertFalse(isDevToolsJarIncluded(repackageFile)); assertFalse(isDevToolsJarIncluded(repackageFile));
} }
@Test
public void customRepackagingTaskWithOwnMainClassNameAnNoGlobalMainClassName() {
project.newBuild().forTasks("clean", "customRepackagedJarWithOwnMainClass")
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
"-PexcludeDevtools=false", "-PnoMainClass=true")
.run();
File buildLibs = new File("target/repackage/build/libs");
assertTrue(new File(buildLibs, "custom.jar").exists());
assertTrue(new File(buildLibs, "custom.jar.original").exists());
}
private boolean isDevToolsJarIncluded(File repackageFile) throws IOException { private boolean isDevToolsJarIncluded(File repackageFile) throws IOException {
JarFile jarFile = new JarFile(repackageFile); JarFile jarFile = new JarFile(repackageFile);
try { try {
......
...@@ -23,7 +23,9 @@ dependencies { ...@@ -23,7 +23,9 @@ dependencies {
} }
springBoot { springBoot {
if (!project.hasProperty("noMainClass")) {
mainClass = 'foo.bar.Baz' mainClass = 'foo.bar.Baz'
}
excludeDevtools = Boolean.valueOf(project.excludeDevtools) excludeDevtools = Boolean.valueOf(project.excludeDevtools)
} }
...@@ -50,3 +52,8 @@ task customRepackagedJar(type: BootRepackage, dependsOn: customJar) { ...@@ -50,3 +52,8 @@ task customRepackagedJar(type: BootRepackage, dependsOn: customJar) {
task customRepackagedJarWithStringReference(type: BootRepackage, dependsOn: customJar) { task customRepackagedJarWithStringReference(type: BootRepackage, dependsOn: customJar) {
withJarTask = 'customJar' withJarTask = 'customJar'
} }
task customRepackagedJarWithOwnMainClass(type: BootRepackage, dependsOn: customJar) {
withJarTask = customJar
mainClass = 'foo.bar.Baz'
}
...@@ -240,15 +240,17 @@ public class RepackageTask extends DefaultTask { ...@@ -240,15 +240,17 @@ public class RepackageTask extends DefaultTask {
} }
private void setMainClass(Repackager repackager) { private void setMainClass(Repackager repackager) {
String mainClass; String mainClass = null;
if (getProject().hasProperty("mainClassName")) { if (getProject().hasProperty("mainClassName")) {
mainClass = (String) getProject().property("mainClassName"); mainClass = (String) getProject().property("mainClassName");
} }
else { else {
ExtraPropertiesExtension extraProperties = (ExtraPropertiesExtension) getProject() ExtraPropertiesExtension extraProperties = (ExtraPropertiesExtension) getProject()
.getExtensions().getByName("ext"); .getExtensions().getByName("ext");
if (extraProperties.has("mainClassName")) {
mainClass = (String) extraProperties.get("mainClassName"); mainClass = (String) extraProperties.get("mainClassName");
} }
}
if (RepackageTask.this.mainClass != null) { if (RepackageTask.this.mainClass != null) {
mainClass = RepackageTask.this.mainClass; mainClass = RepackageTask.this.mainClass;
} }
...@@ -262,9 +264,14 @@ public class RepackageTask extends DefaultTask { ...@@ -262,9 +264,14 @@ public class RepackageTask extends DefaultTask {
.property("main"); .property("main");
} }
} }
if (mainClass != null) {
getLogger().info("Setting mainClass: " + mainClass); getLogger().info("Setting mainClass: " + mainClass);
repackager.setMainClass(mainClass); repackager.setMainClass(mainClass);
} }
else {
getLogger().info("No mainClass configured");
}
}
private LaunchScript getLaunchScript() throws IOException { private LaunchScript getLaunchScript() throws IOException {
if (isExecutable() || getEmbeddedLaunchScript() != null) { if (isExecutable() || getEmbeddedLaunchScript() != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment