public int executeJlink()

in src/main/java/org/apache/maven/plugins/jlink/JLinkExecutor.java [71:129]


    public int executeJlink(List<String> jlinkArgs) throws MojoExecutionException {
        if (getToolchain().isPresent()) {
            return super.executeJlink(jlinkArgs);
        }

        if (getLog().isDebugEnabled()) {
            // no quoted arguments ???
            getLog().debug(this.toolProvider.name() + " " + jlinkArgs);
        }

        try (StringWriter strErr = new StringWriter();
                PrintWriter err = new PrintWriter(strErr);
                StringWriter strOut = new StringWriter();
                PrintWriter out = new PrintWriter(strOut)) {
            int exitCode = this.toolProvider.run(out, err, jlinkArgs.toArray(new String[0]));
            out.flush();
            err.flush();

            String outAsString = strOut.toString();
            String output = outAsString.isBlank() ? null : '\n' + outAsString.trim();

            if (exitCode != 0) {
                if (output != null && !output.isBlank()) {
                    // Reconsider to use WARN / ERROR ?
                    //  getLog().error( output );
                    for (String outputLine : output.split("\n")) {
                        getLog().error(outputLine);
                    }
                }

                StringBuilder msg = new StringBuilder("\nExit code: ");
                msg.append(exitCode);
                String errAsString = strErr.toString();
                if (errAsString != null && !errAsString.isBlank()) {
                    msg.append(" - ").append(errAsString);
                }
                msg.append('\n');
                msg.append("Command line was: ")
                        .append(this.toolProvider.name())
                        .append(' ')
                        .append(jlinkArgs)
                        .append('\n')
                        .append('\n');

                throw new MojoExecutionException(msg.toString());
            }

            if (output != null && !output.isBlank()) {
                // getLog().info( output );
                for (String outputLine : output.split("\n")) {
                    getLog().info(outputLine);
                }
            }

            return exitCode;
        } catch (IOException e) {
            throw new MojoExecutionException("Unable to execute jlink command: " + e.getMessage(), e);
        }
    }