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.file.CopySpec;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
import org.gradle.api.internal.IConventionAware;
|
||||
import org.gradle.api.plugins.ApplicationPlugin;
|
||||
import org.gradle.api.plugins.ApplicationPluginConvention;
|
||||
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator;
|
||||
|
@ -49,6 +50,10 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
|||
DistributionContainer distributions = project.getExtensions()
|
||||
.getByType(DistributionContainer.class);
|
||||
Distribution distribution = distributions.create("boot");
|
||||
if (distribution instanceof IConventionAware) {
|
||||
((IConventionAware) distribution).getConventionMapping().map("baseName",
|
||||
() -> applicationConvention.getApplicationName() + "-boot");
|
||||
}
|
||||
CreateBootStartScripts bootStartScripts = project.getTasks()
|
||||
.create("bootStartScripts", CreateBootStartScripts.class);
|
||||
bootStartScripts.setDescription("Generates OS-specific start scripts to run the"
|
||||
|
@ -71,7 +76,7 @@ final class ApplicationPluginAction implements PluginApplicationAction {
|
|||
bootStartScripts.getConventionMapping().map("outputDir",
|
||||
() -> new File(project.getBuildDir(), "bootScripts"));
|
||||
bootStartScripts.getConventionMapping().map("applicationName",
|
||||
() -> applicationConvention.getApplicationName());
|
||||
applicationConvention::getApplicationName);
|
||||
CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts);
|
||||
binCopySpec.setFileMode(0x755);
|
||||
distribution.getContents().with(binCopySpec);
|
||||
|
|
|
@ -133,6 +133,21 @@ public class ApplicationPluginActionIntegrationTests {
|
|||
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 {
|
||||
List<String> entryNames = new ArrayList<>();
|
||||
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