From ffc2163339bfe51c37c853fe659ff627a1fb0e36 Mon Sep 17 00:00:00 2001 From: Ashley <73482956+ascopes@users.noreply.github.com> Date: Fri, 5 Apr 2024 16:22:46 +0100 Subject: [PATCH] Merge pull request #147 from ascopes/bugfix/classpath-flag-ordering Fix order of -classpath flag in JvmPluginResolver --- .../dependency/JvmPluginResolver.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/github/ascopes/protobufmavenplugin/dependency/JvmPluginResolver.java b/src/main/java/io/github/ascopes/protobufmavenplugin/dependency/JvmPluginResolver.java index abdfa40..835b1ae 100644 --- a/src/main/java/io/github/ascopes/protobufmavenplugin/dependency/JvmPluginResolver.java +++ b/src/main/java/io/github/ascopes/protobufmavenplugin/dependency/JvmPluginResolver.java @@ -29,6 +29,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.Set; import javax.inject.Inject; @@ -108,26 +109,33 @@ private List resolveAndBuildArgLine( .iterator(); // First dependency is always the thing we actually want to execute, - // so is guaranteed to be present. + // so is guaranteed to be present. Marked as final to avoid checkstyle complaining + // about the distance between declaration and usage. + final var pluginPath = dependencyIterator.next(); var args = new ArrayList(); args.add("java"); - args.add("-jar"); - args.add(dependencyIterator.next().toString()); if (dependencyIterator.hasNext()) { - var sb = new StringBuilder().append(dependencyIterator.next()); - - while (dependencyIterator.hasNext()) { - sb.append(":").append(dependencyIterator.next()); - } - args.add("-classpath"); - args.add(sb.toString()); + args.add(buildClasspath(dependencyIterator)); } + args.add("-jar"); + args.add(pluginPath.toString()); + return args; } + private String buildClasspath(Iterator paths) { + var sb = new StringBuilder().append(paths.next()); + + while (paths.hasNext()) { + sb.append(":").append(paths.next()); + } + + return sb.toString(); + } + private String pluginIdDigest(DependableCoordinate dependableCoordinate) { var digestableString = String.join( ":",