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
pull/4844/head
Stephane Nicoll 9 years ago
parent 96ca3e0c0f
commit 6d90188a27

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -106,6 +106,8 @@ class ProjectGenerator {
new ByteArrayInputStream(entity.getContent())); new ByteArrayInputStream(entity.getContent()));
try { try {
extractFromStream(zipStream, overwrite, outputFolder); extractFromStream(zipStream, overwrite, outputFolder);
fixExecutableFlag(outputFolder, "mvnw");
fixExecutableFlag(outputFolder, "gradlew");
Log.info("Project extracted to '" + outputFolder.getAbsolutePath() + "'"); Log.info("Project extracted to '" + outputFolder.getAbsolutePath() + "'");
} }
finally { finally {
@ -154,4 +156,11 @@ class ProjectGenerator {
Log.info("Content saved to '" + output + "'"); 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);
}
}
} }

Loading…
Cancel
Save