Ignore excludeDevtools on extension when it has been set on bootRepackage
Previously, bootRepackage's excludeDevtools property would be overridden by the springBoot extension's excludeDevtools property. This prevented devtools from being included by configuring it on the repackaging task. This commit corrects the logic so that the setting on the repackaging task takes priority. It also adds some tests to verify the behaviour. Closes gh-8308
This commit is contained in:
parent
f57ddff478
commit
f67dd957b1
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
* Copyright 2012-2017 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.
|
||||
|
@ -20,6 +20,7 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
import org.gradle.tooling.BuildLauncher;
|
||||
import org.gradle.tooling.ProjectConnection;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
@ -46,24 +47,20 @@ public class RepackagingTests {
|
|||
|
||||
@Test
|
||||
public void repackagingEnabled() throws IOException {
|
||||
project.newBuild().forTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=false")
|
||||
.run();
|
||||
createBuildForTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true").run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
File repackageFile = new File(buildLibs, "repackage.jar");
|
||||
assertThat(repackageFile.exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage.jar.original").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage-sources.jar.original").exists())
|
||||
.isFalse();
|
||||
assertThat(isDevToolsJarIncluded(repackageFile)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void repackagingDisabled() {
|
||||
project.newBuild().forTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false",
|
||||
"-PexcludeDevtools=false")
|
||||
createBuildForTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "repackage.jar").exists()).isTrue();
|
||||
|
@ -74,9 +71,8 @@ public class RepackagingTests {
|
|||
|
||||
@Test
|
||||
public void repackagingDisabledWithCustomRepackagedJar() {
|
||||
project.newBuild().forTasks("clean", "build", "customRepackagedJar")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false",
|
||||
"-PexcludeDevtools=false")
|
||||
createBuildForTasks("clean", "build", "customRepackagedJar")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "repackage.jar").exists()).isTrue();
|
||||
|
@ -91,8 +87,7 @@ public class RepackagingTests {
|
|||
public void repackagingDisabledWithCustomRepackagedJarUsingStringJarTaskReference() {
|
||||
project.newBuild()
|
||||
.forTasks("clean", "build", "customRepackagedJarWithStringReference")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false",
|
||||
"-PexcludeDevtools=false")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=false")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "repackage.jar").exists()).isTrue();
|
||||
|
@ -105,10 +100,8 @@ public class RepackagingTests {
|
|||
|
||||
@Test
|
||||
public void repackagingEnabledWithCustomRepackagedJar() {
|
||||
project.newBuild().forTasks("clean", "build", "customRepackagedJar")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=false")
|
||||
.run();
|
||||
createBuildForTasks("clean", "build", "customRepackagedJar")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true").run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "repackage.jar").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage.jar.original").exists()).isTrue();
|
||||
|
@ -122,9 +115,7 @@ public class RepackagingTests {
|
|||
public void repackagingEnableWithCustomRepackagedJarUsingStringJarTaskReference() {
|
||||
project.newBuild()
|
||||
.forTasks("clean", "build", "customRepackagedJarWithStringReference")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=false")
|
||||
.run();
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true").run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "repackage.jar").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage.jar.original").exists()).isTrue();
|
||||
|
@ -138,10 +129,8 @@ public class RepackagingTests {
|
|||
public void repackageWithFileDependency() throws Exception {
|
||||
FileCopyUtils.copy(new File("src/test/resources/foo.jar"),
|
||||
new File("target/repackage/foo.jar"));
|
||||
project.newBuild().forTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=false")
|
||||
.run();
|
||||
createBuildForTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true").run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
JarFile jarFile = new JarFile(new File(buildLibs, "repackage.jar"));
|
||||
assertThat(jarFile.getEntry("BOOT-INF/lib/foo.jar")).isNotNull();
|
||||
|
@ -149,11 +138,9 @@ public class RepackagingTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void repackagingEnabledExcludeDevtools() throws IOException {
|
||||
project.newBuild().forTasks("clean", "build")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=true")
|
||||
.run();
|
||||
public void devtoolsIsExcludedByDefault() throws IOException {
|
||||
createBuildForTasks("clean", "bootRepackage")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true").run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
File repackageFile = new File(buildLibs, "repackage.jar");
|
||||
assertThat(repackageFile.exists()).isTrue();
|
||||
|
@ -164,16 +151,51 @@ public class RepackagingTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void customRepackagingTaskWithOwnMainClassNameAnNoGlobalMainClassName() {
|
||||
project.newBuild().forTasks("clean", "customRepackagedJarWithOwnMainClass")
|
||||
public void devtoolsCanBeIncludedUsingTheExtension() throws IOException {
|
||||
createBuildForTasks("clean", "bootRepackage")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtools=false", "-PnoMainClass=true")
|
||||
"-PexcludeDevtoolsOnExtension=false")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
File repackageFile = new File(buildLibs, "repackage.jar");
|
||||
assertThat(repackageFile.exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage.jar.original").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage-sources.jar.original").exists())
|
||||
.isFalse();
|
||||
assertThat(isDevToolsJarIncluded(repackageFile)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void devtoolsCanBeIncludedUsingBootRepackage() throws IOException {
|
||||
createBuildForTasks("clean", "bootRepackage")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PexcludeDevtoolsOnBootRepackage=false")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
File repackageFile = new File(buildLibs, "repackage.jar");
|
||||
assertThat(repackageFile.exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage.jar.original").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "repackage-sources.jar.original").exists())
|
||||
.isFalse();
|
||||
assertThat(isDevToolsJarIncluded(repackageFile)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customRepackagingTaskWithOwnMainClassNameAnNoGlobalMainClassName() {
|
||||
createBuildForTasks("clean", "customRepackagedJarWithOwnMainClass")
|
||||
.withArguments("-PbootVersion=" + BOOT_VERSION, "-Prepackage=true",
|
||||
"-PnoMainClass=true")
|
||||
.run();
|
||||
File buildLibs = new File("target/repackage/build/libs");
|
||||
assertThat(new File(buildLibs, "custom.jar").exists()).isTrue();
|
||||
assertThat(new File(buildLibs, "custom.jar.original").exists()).isTrue();
|
||||
}
|
||||
|
||||
private BuildLauncher createBuildForTasks(String... taskNames) {
|
||||
return project.newBuild().setStandardError(System.err)
|
||||
.setStandardOutput(System.out).forTasks(taskNames);
|
||||
}
|
||||
|
||||
private boolean isDevToolsJarIncluded(File repackageFile) throws IOException {
|
||||
JarFile jarFile = new JarFile(repackageFile);
|
||||
try {
|
||||
|
|
|
@ -26,10 +26,17 @@ springBoot {
|
|||
if (!project.hasProperty("noMainClass")) {
|
||||
mainClass = 'foo.bar.Baz'
|
||||
}
|
||||
excludeDevtools = Boolean.valueOf(project.excludeDevtools)
|
||||
if (project.hasProperty("excludeDevtoolsOnExtension")) {
|
||||
excludeDevtools = Boolean.valueOf(project.excludeDevtoolsOnExtension)
|
||||
}
|
||||
}
|
||||
|
||||
bootRepackage.enabled = Boolean.valueOf(project.repackage)
|
||||
bootRepackage {
|
||||
enabled = Boolean.valueOf(project.repackage)
|
||||
if (project.hasProperty("excludeDevtoolsOnBootRepackage")) {
|
||||
excludeDevtools = Boolean.valueOf(project.excludeDevtoolsOnBootRepackage)
|
||||
}
|
||||
}
|
||||
|
||||
task customJar(type: Jar) {
|
||||
archiveName = 'custom.jar'
|
||||
|
|
|
@ -145,8 +145,8 @@ public class RepackageTask extends DefaultTask {
|
|||
SpringBootPluginExtension extension = project.getExtensions()
|
||||
.getByType(SpringBootPluginExtension.class);
|
||||
ProjectLibraries libraries = new ProjectLibraries(project, extension,
|
||||
(this.excludeDevtools != null && this.excludeDevtools)
|
||||
|| extension.isExcludeDevtools());
|
||||
this.excludeDevtools == null ? extension.isExcludeDevtools()
|
||||
: this.excludeDevtools);
|
||||
if (extension.getProvidedConfiguration() != null) {
|
||||
libraries.setProvidedConfigurationName(extension.getProvidedConfiguration());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue