public static IntegrationResult runIntegrations(BuildContext ctx) {
		IntegrationResult result = new IntegrationResult(null, null, null);
		Project prj = ctx.getProject();
		Path compileDir = ctx.getCompileDir();
		Path pomPath = CompileBuildStep.getPomPath(ctx);
		Source source = prj.getMainSource();

		LinkedHashMap<String, String> repos = new LinkedHashMap<>();
		LinkedHashMap<String, Path> deps = new LinkedHashMap<>();
		for (MavenRepo repo : prj.getRepositories()) {
			repos.put(repo.getId(), repo.getUrl());
		}
		for (ArtifactInfo art : ctx.resolveClassPath().getArtifacts()) {
			if (art.getCoordinate() != null) { // skipping dependencies that does not have a GAV
				deps.put(art.getCoordinate().toCanonicalForm(), art.getFile());
			}
		}

		List<String> comments = source.getTags().map(s -> "//" + s).collect(Collectors.toList());
		ClassLoader old = Thread.currentThread().getContextClassLoader();
		PrintStream oldout = System.out;
		try {
			URLClassLoader integrationCl = getClassLoader(deps.values());
			Thread.currentThread().setContextClassLoader(integrationCl);
			String requestedJavaVersion = prj.getJavaVersion();
			Set<String> classNames = loadIntegrationClassNames(integrationCl);
			for (String className : classNames) {
				Path srcPath = (source.getResourceRef().getFile() != null)
						? source.getResourceRef().getFile().toAbsolutePath()
						: null;
				IntegrationInput input = new IntegrationInput(className, srcPath, compileDir, pomPath, repos, deps,
						comments, prj.isNativeImage(), Util.isVerbose());
				IntegrationResult ir = requestedJavaVersion == null || JavaUtil.satisfiesRequestedVersion(
						requestedJavaVersion, JavaUtil.getCurrentMajorJavaVersion())
								? runIntegrationEmbedded(input, integrationCl)
								: runIntegrationExternal(input, prj.getProperties(), prj.projectJdk());
				result = result.merged(ir);
			}
		} catch (ClassNotFoundException e) {
			throw new ExitException(EXIT_INVALID_INPUT, "Unable to load integration class", e);
		} catch (NoSuchMethodException e) {
			throw new ExitException(
					EXIT_INVALID_INPUT,
					"Integration class missing method with signature public static Map<String, byte[]> postBuild(Path classesDir, Path pomFile, List<Map.Entry<String, Path>> dependencies)",
					e);
		} catch (Exception e) {
			throw new ExitException(EXIT_GENERIC_ERROR, "Issue running postBuild()", e);
		} finally {
			Thread.currentThread().setContextClassLoader(old);
			System.setOut(oldout);
		}
		return result;
	}
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