public void launchQuickstart()

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);
    }