From 6d90188a2712e93c3b11553c79eb61f60fc47083 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 6 Nov 2015 17:41:29 +0100 Subject: [PATCH] Fix Maven/Gradle wrapper executable flag Spring Initalizr now bundles a wrapper script for the build system. While that wrapper has the necessary execute flag in the zip archive, that flag is lost as the zip abstraction does not honor those. The init command now makes sure to restore the execute flag on `mvnw` and `gradlew` if necessary. Unfortunately, this can't be tested as the Windows build would fail to assert that the executable flag has been propertly set. Closes gh-4392 --- .../boot/cli/command/init/ProjectGenerator.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerator.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerator.java index 3355eb4dcd1..f0fdaf7300b 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerator.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2015 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. @@ -106,6 +106,8 @@ class ProjectGenerator { new ByteArrayInputStream(entity.getContent())); try { extractFromStream(zipStream, overwrite, outputFolder); + fixExecutableFlag(outputFolder, "mvnw"); + fixExecutableFlag(outputFolder, "gradlew"); Log.info("Project extracted to '" + outputFolder.getAbsolutePath() + "'"); } finally { @@ -154,4 +156,11 @@ class ProjectGenerator { Log.info("Content saved to '" + output + "'"); } + private void fixExecutableFlag(File dir, String fileName) { + File f = new File(dir, fileName); + if (f.exists()) { + f.setExecutable(true, false); + } + } + }