Use application name as convention for distribution's base name
Closes gh-12232
This commit is contained in:
parent
60ac2e5c09
commit
30f79f2fb1
|
|
@ -29,6 +29,7 @@ import org.gradle.api.distribution.Distribution;
|
||||||
import org.gradle.api.distribution.DistributionContainer;
|
import org.gradle.api.distribution.DistributionContainer;
|
||||||
import org.gradle.api.file.CopySpec;
|
import org.gradle.api.file.CopySpec;
|
||||||
import org.gradle.api.file.FileCollection;
|
import org.gradle.api.file.FileCollection;
|
||||||
|
import org.gradle.api.internal.IConventionAware;
|
||||||
import org.gradle.api.plugins.ApplicationPlugin;
|
import org.gradle.api.plugins.ApplicationPlugin;
|
||||||
import org.gradle.api.plugins.ApplicationPluginConvention;
|
import org.gradle.api.plugins.ApplicationPluginConvention;
|
||||||
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator;
|
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator;
|
||||||
|
|
@ -49,6 +50,10 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
||||||
DistributionContainer distributions = project.getExtensions()
|
DistributionContainer distributions = project.getExtensions()
|
||||||
.getByType(DistributionContainer.class);
|
.getByType(DistributionContainer.class);
|
||||||
Distribution distribution = distributions.create("boot");
|
Distribution distribution = distributions.create("boot");
|
||||||
|
if (distribution instanceof IConventionAware) {
|
||||||
|
((IConventionAware) distribution).getConventionMapping().map("baseName",
|
||||||
|
() -> applicationConvention.getApplicationName() + "-boot");
|
||||||
|
}
|
||||||
CreateBootStartScripts bootStartScripts = project.getTasks()
|
CreateBootStartScripts bootStartScripts = project.getTasks()
|
||||||
.create("bootStartScripts", CreateBootStartScripts.class);
|
.create("bootStartScripts", CreateBootStartScripts.class);
|
||||||
bootStartScripts.setDescription("Generates OS-specific start scripts to run the"
|
bootStartScripts.setDescription("Generates OS-specific start scripts to run the"
|
||||||
|
|
@ -71,7 +76,7 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
||||||
bootStartScripts.getConventionMapping().map("outputDir",
|
bootStartScripts.getConventionMapping().map("outputDir",
|
||||||
() -> new File(project.getBuildDir(), "bootScripts"));
|
() -> new File(project.getBuildDir(), "bootScripts"));
|
||||||
bootStartScripts.getConventionMapping().map("applicationName",
|
bootStartScripts.getConventionMapping().map("applicationName",
|
||||||
() -> applicationConvention.getApplicationName());
|
applicationConvention::getApplicationName);
|
||||||
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
|
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
|
||||||
binCopySpec.setFileMode(0x755);
|
binCopySpec.setFileMode(0x755);
|
||||||
distribution.getContents().with(binCopySpec);
|
distribution.getContents().with(binCopySpec);
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,21 @@ public class ApplicationPluginActionIntegrationTests {
|
||||||
name + "-boot/bin/" + name + ".bat");
|
name + "-boot/bin/" + name + ".bat");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void applicationNameCanBeUsedToCustomizeDistributionName() throws IOException {
|
||||||
|
assertThat(
|
||||||
|
this.gradleBuild.build("bootDistTar").task(":bootDistTar").getOutcome())
|
||||||
|
.isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
File distribution = new File(this.gradleBuild.getProjectDir(),
|
||||||
|
"build/distributions/custom-boot.tar");
|
||||||
|
assertThat(distribution).isFile();
|
||||||
|
String name = this.gradleBuild.getProjectDir().getName();
|
||||||
|
assertThat(tarEntryNames(distribution)).containsExactlyInAnyOrder("custom-boot/",
|
||||||
|
"custom-boot/lib/", "custom-boot/lib/" + name + ".jar",
|
||||||
|
"custom-boot/bin/", "custom-boot/bin/custom",
|
||||||
|
"custom-boot/bin/custom.bat");
|
||||||
|
}
|
||||||
|
|
||||||
private List<String> zipEntryNames(File distribution) throws IOException {
|
private List<String> zipEntryNames(File distribution) throws IOException {
|
||||||
List<String> entryNames = new ArrayList<>();
|
List<String> entryNames = new ArrayList<>();
|
||||||
try (ZipFile zipFile = new ZipFile(distribution)) {
|
try (ZipFile zipFile = new ZipFile(distribution)) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'application'
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
applicationName = 'custom'
|
||||||
|
|
||||||
|
bootJar {
|
||||||
|
mainClassName = 'com.example.ExampleApplication'
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue