From 8c106af38455a4edbd74932068fdbd03113bf8a5 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 11 Aug 2016 20:25:59 +0100 Subject: [PATCH] Allow default value for CONF_FOLDER to be set at build time Closes gh-6549 --- spring-boot-docs/src/main/asciidoc/deployment.adoc | 3 +++ .../boot/loader/tools/DefaultLaunchScript.java | 4 ++-- .../org/springframework/boot/loader/tools/launch.script | 2 +- .../boot/loader/tools/DefaultLaunchScriptTests.java | 5 +++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/spring-boot-docs/src/main/asciidoc/deployment.adoc b/spring-boot-docs/src/main/asciidoc/deployment.adoc index b89cbc04003..62efaf75952 100644 --- a/spring-boot-docs/src/main/asciidoc/deployment.adoc +++ b/spring-boot-docs/src/main/asciidoc/deployment.adoc @@ -608,6 +608,9 @@ for Gradle and to `${project.name}` for Maven. |`initInfoChkconfig` |The `chkconfig` section of "`INIT INFO`". Defaults to `2345 99 01`. +|`confFolder` +|The default value for `CONF_FOLDER`. Defaults to the folder containing the jar. + |`logFolder` |The default value for `LOG_FOLDER`. Only valid for an `init.d` service. diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/DefaultLaunchScript.java b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/DefaultLaunchScript.java index 0ba4f7a0aa8..fc6d952c738 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/DefaultLaunchScript.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/DefaultLaunchScript.java @@ -42,7 +42,7 @@ public class DefaultLaunchScript implements LaunchScript { private static final int BUFFER_SIZE = 4096; private static final Pattern PLACEHOLDER_PATTERN = Pattern - .compile("\\{\\{(\\w+)(:.*?)?\\}\\}"); + .compile("\\{\\{(\\w+)(:.*?)?\\}\\}(?!\\})"); private final String content; @@ -97,7 +97,7 @@ public class DefaultLaunchScript implements LaunchScript { else { value = (value == null ? matcher.group(0) : value.substring(1)); } - matcher.appendReplacement(expanded, value); + matcher.appendReplacement(expanded, value.replace("$", "\\$")); } matcher.appendTail(expanded); return expanded.toString(); diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script b/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script index e804f1b6868..9b8b0277a19 100755 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script @@ -44,7 +44,7 @@ cd "$WORKING_DIR" || exit 1 configfile="$(basename "${jarfile%.*}.conf")" # Initialize CONF_FOLDER location defaulting to jarfolder -[[ -z "$CONF_FOLDER" ]] && CONF_FOLDER="${jarfolder}" +[[ -z "$CONF_FOLDER" ]] && CONF_FOLDER="{{confFolder:${jarfolder}}}" # shellcheck source=/dev/null [[ -r "${CONF_FOLDER}/${configfile}" ]] && source "${CONF_FOLDER}/${configfile}" diff --git a/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/DefaultLaunchScriptTests.java b/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/DefaultLaunchScriptTests.java index 6b22030c812..ba1e2dd0bb7 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/DefaultLaunchScriptTests.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/DefaultLaunchScriptTests.java @@ -86,6 +86,11 @@ public class DefaultLaunchScriptTests { assertThatPlaceholderCanBeReplaced("pidFolder"); } + @Test + public void confFolderCanBeReplaced() throws Exception { + assertThatPlaceholderCanBeReplaced("confFolder"); + } + @Test public void defaultForUseStartStopDaemonIsTrue() throws Exception { DefaultLaunchScript script = new DefaultLaunchScript(null, null);