private static IntegrationResult runIntegrationExternal(IntegrationInput input,
			Map<String, String> properties,
			Jdk jdk)
			throws Exception {
		Gson parser = gsonb.create();
		Util.infoMsg("Running external post build for " + input.integrationClassName);

		List<String> args = new ArrayList<>();
		args.add(resolveInJavaHome("java", jdk)); // TODO
		for (Map.Entry<String, String> entry : properties.entrySet()) {
			args.add("-D" + entry.getKey() + "=" + entry.getValue());
		}

		Path jbangJar = Util.getJarLocation();
		args.add("-cp");
		if (jbangJar.toString().endsWith(".jar")) {
			args.add(jbangJar.toString());
		} else {
			// We will assume that we're running inside an IDE or
			// some kind of test environment and need to manually
			// add the Gson dependency
			Path gsonJar = Util.getJarLocation(Gson.class);
			args.add(jbangJar + File.pathSeparator + gsonJar);
		}

		args.add("dev.jbang.spi.IntegrationManager");

		if (Util.isVerbose()) {
			Util.verboseMsg("Running: " + String.join(" ", args));
			Util.verboseMsg("Input: " + parser.toJson(input));
		}

		Process process = new ProcessBuilder(args)
			.redirectError(ProcessBuilder.Redirect.INHERIT)
			.start();

		try (Writer w = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()))) {
			parser.toJson(input, w);
		}

		String cmdOutput;
		try (BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
			cmdOutput = br.lines().collect(Collectors.joining());
		}

		try {
			process.waitFor();
		} catch (InterruptedException e) {
			throw new ExitException(EXIT_GENERIC_ERROR, "External post build was interrupted", e);
		}

		Util.verboseMsg("Output: #" + process.exitValue() + " - " + cmdOutput);

		if (process.exitValue() == 0) {
			return parser.fromJson(new StringReader(cmdOutput), IntegrationResult.class);
		} else {
			throw new ExitException(EXIT_GENERIC_ERROR, "External post exited with error: " + cmdOutput);
		}
	}
Discovers all integration points and runs them.
<p>
If an integration point created a native image it returns the resulting
image.
src/main/java/dev/jbang/spi/IntegrationManager.java