in build/quickstarts-showcase/src/main/java/org/optaplanner/quickstarts/all/rest/QuickstartLauncherResource.java [89:129]
public void launchQuickstart(@PathParam("quickstartId") String quickstartId) {
QuickstartMeta quickstartMeta = quickstartMetaList.stream()
.filter(quickstartMeta_ -> quickstartMeta_.getId().equals(quickstartId))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("The quickstartId (" + quickstartId + ") doesn't exist."));
LOGGER.info("Starting quickstart ({})...", quickstartId);
ProcessBuilder processBuilder;
int port = this.nextPort;
String portArg = "-Dquarkus.http.port=" + port;
// CORS allows the JS to detect when the server has started
String corsArg = "-Dquarkus.http.cors=true";
this.nextPort++;
if (development) {
String mvnCommand;
if (System.getProperty("os.name").startsWith("Windows")) {
mvnCommand = baseDirectory.resolve(Paths.get("build", "mvnw.cmd")).toString();
} else {
mvnCommand = baseDirectory.resolve(Paths.get("build", "mvnw")).toString();
}
processBuilder = new ProcessBuilder(mvnCommand, "-f", "../use-cases/" + quickstartId, "quarkus:dev", portArg,
corsArg, "-Ddebug=false");
processBuilder.directory(baseDirectory.resolve("build").toFile());
} else {
processBuilder = new ProcessBuilder("java", portArg, corsArg, "-jar",
getQuickstartRunnerJar(quickstartId).getAbsolutePath());
processBuilder.directory(baseDirectory.resolve(Paths.get("use-cases", quickstartId)).toFile());
}
processBuilder.inheritIO();
Process process;
try {
process = processBuilder.start();
} catch (IOException e) {
throw new IllegalStateException("Failed starting the subprocess for quickstart (" + quickstartId + ").\n"
+ (development ? "Maybe check if \"build/mvnw\" and \"build\\mvnw.cmd\" exist."
: "Maybe install Java and check if \"java --version\" works."),
e);
}
portToProcessMap.put(port, process);
quickstartMeta.getPorts().add(port);
}