Skip to content

Commit b271834

Browse files
dwickernmuuki88
authored andcommitted
fix launcher jar paths not being quoted on Windows (#1040)
1 parent 2a8370d commit b271834

File tree

4 files changed

+7
-16
lines changed

4 files changed

+7
-16
lines changed

src/main/scala/com/typesafe/sbt/packager/archetypes/scripts/BashStartScriptPlugin.scala

+1-10
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ object BashStartScriptPlugin extends AutoPlugin {
196196
def apply(mainClass: String, config: BashScriptConfig, targetDir: File, mainClasses: Seq[String]): File = {
197197
val template = resolveTemplate(config.bashScriptTemplateLocation)
198198
val replacements = Seq(
199-
"app_mainclass" -> mainClassReplacement(mainClass),
199+
"app_mainclass" -> mainClass,
200200
"available_main_classes" -> usageMainClassReplacement(mainClasses)
201201
) ++ config.bashScriptReplacements
202202

@@ -208,15 +208,6 @@ object BashStartScriptPlugin extends AutoPlugin {
208208
script
209209
}
210210

211-
private[this] def mainClassReplacement(mainClass: String): String = {
212-
val jarPrefixed = """^\-jar (.*)""".r
213-
val args = mainClass match {
214-
case jarPrefixed(jarName) => Seq("-jar", jarName)
215-
case className => Seq(className)
216-
}
217-
args.map(s => "\"" + s + "\"").mkString(" ")
218-
}
219-
220211
private[this] def usageMainClassReplacement(mainClasses: Seq[String]): String =
221212
if (mainClasses.nonEmpty)
222213
mainClasses.mkString("Available main classes:\n\t", "\n\t", "")

src/main/scala/com/typesafe/sbt/packager/jar/LauncherJarPlugin.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ object LauncherJarPlugin extends AutoPlugin {
3939
artifact.classifier.fold("")("-" + _) + "." + artifact.extension
4040
},
4141
mainClass in (Compile, bashScriptDefines) := {
42-
Some("-jar $lib_dir/" + (artifactPath in packageJavaLauncherJar).value.getName)
42+
Some(s"""-jar "$$lib_dir/${(artifactPath in packageJavaLauncherJar).value.getName}"""")
4343
},
4444
scriptClasspath in bashScriptDefines := Nil,
4545
mainClass in (Compile, batScriptReplacements) := {
46-
Some("-jar %APP_LIB_DIR%\\" + (artifactPath in packageJavaLauncherJar).value.getName)
46+
Some(s"""-jar "%APP_LIB_DIR%\\${(artifactPath in packageJavaLauncherJar).value.getName}"""")
4747
},
4848
scriptClasspath in batScriptReplacements := Nil,
4949
mappings in Universal += {

src/sbt-test/jar/launcher-jar with spaces/build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ TaskKey[Unit]("checkClasspath") := {
1212
val bat = IO.read(dir / "bin" / "launcher-jar-test.bat")
1313
assert(bat contains "set \"APP_CLASSPATH=\"", "bat should set APP_CLASSPATH:\n" + bat)
1414
assert(
15-
bat contains "set \"APP_MAIN_CLASS=-jar %APP_LIB_DIR%\\launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"",
15+
bat contains "set \"APP_MAIN_CLASS=-jar \"%APP_LIB_DIR%\\launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"\"",
1616
"bat should set APP_MAIN_CLASS:\n" + bat
1717
)
1818
val bash = IO.read(dir / "bin" / "launcher-jar-test")
1919
assert(bash contains "declare -r app_classpath=\"\"", "bash should declare app_classpath:\n" + bash)
2020
assert(
21-
bash contains "declare -a app_mainclass=(\"-jar\" \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
21+
bash contains "declare -a app_mainclass=(-jar \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
2222
"bash should declare app_mainclass:\n" + bash
2323
)
2424
val jar = new java.util.jar.JarFile(dir / "lib" / "launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar")

src/sbt-test/jar/launcher-jar/build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ TaskKey[Unit]("checkClasspath") := {
1414
val bat = IO.read(dir / "bin" / "launcher-jar-test.bat")
1515
assert(bat contains "set \"APP_CLASSPATH=\"", "bat should set APP_CLASSPATH:\n" + bat)
1616
assert(
17-
bat contains "set \"APP_MAIN_CLASS=-jar %APP_LIB_DIR%\\launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"",
17+
bat contains "set \"APP_MAIN_CLASS=-jar \"%APP_LIB_DIR%\\launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"\"",
1818
"bat should set APP_MAIN_CLASS:\n" + bat
1919
)
2020
val bash = IO.read(dir / "bin" / "launcher-jar-test")
2121
assert(bash contains "declare -r app_classpath=\"\"", "bash should declare app_classpath:\n" + bash)
2222
assert(
23-
bash contains "declare -a app_mainclass=(\"-jar\" \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
23+
bash contains "declare -a app_mainclass=(-jar \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
2424
"bash should declare app_mainclass:\n" + bash
2525
)
2626
val jar = new java.util.jar.JarFile(dir / "lib" / "launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar")

0 commit comments

Comments
 (0)