Search in sources :

Example 1 with ProcessInheritIODisabledBuildItem

use of io.quarkus.deployment.pkg.builditem.ProcessInheritIODisabledBuildItem in project quarkus by quarkusio.

the class JBangAugmentorImpl method accept.

@Override
public void accept(CuratedApplication curatedApplication, Map<String, Object> resultMap) {
    QuarkusClassLoader classLoader = curatedApplication.getAugmentClassLoader();
    QuarkusBootstrap quarkusBootstrap = curatedApplication.getQuarkusBootstrap();
    QuarkusAugmentor.Builder builder = QuarkusAugmentor.builder().setRoot(quarkusBootstrap.getApplicationRoot()).setClassLoader(classLoader).addFinal(ApplicationClassNameBuildItem.class).setTargetDir(quarkusBootstrap.getTargetDirectory()).setDeploymentClassLoader(curatedApplication.createDeploymentClassLoader()).setBuildSystemProperties(quarkusBootstrap.getBuildSystemProperties()).setEffectiveModel(curatedApplication.getApplicationModel());
    if (quarkusBootstrap.getBaseName() != null) {
        builder.setBaseName(quarkusBootstrap.getBaseName());
    }
    boolean auxiliaryApplication = curatedApplication.getQuarkusBootstrap().isAuxiliaryApplication();
    builder.setAuxiliaryApplication(auxiliaryApplication);
    builder.setAuxiliaryDevModeType(curatedApplication.getQuarkusBootstrap().isHostApplicationIsTestOnly() ? DevModeType.TEST_ONLY : (auxiliaryApplication ? DevModeType.LOCAL : null));
    builder.setLaunchMode(LaunchMode.NORMAL);
    builder.setRebuild(quarkusBootstrap.isRebuild());
    builder.setLiveReloadState(new LiveReloadBuildItem(false, Collections.emptySet(), new HashMap<>(), null));
    for (AdditionalDependency i : quarkusBootstrap.getAdditionalApplicationArchives()) {
        // if it is forced as an app archive
        if (i.isForceApplicationArchive()) {
            builder.addAdditionalApplicationArchive(i.getResolvedPaths());
        }
    }
    builder.addBuildChainCustomizer(new Consumer<BuildChainBuilder>() {

        @Override
        public void accept(BuildChainBuilder builder) {
            final BuildStepBuilder stepBuilder = builder.addBuildStep((ctx) -> {
                ctx.produce(new ProcessInheritIODisabledBuildItem());
            });
            stepBuilder.produces(ProcessInheritIODisabledBuildItem.class).build();
        }
    });
    builder.excludeFromIndexing(quarkusBootstrap.getExcludeFromClassPath());
    builder.addFinal(GeneratedClassBuildItem.class);
    builder.addFinal(MainClassBuildItem.class);
    builder.addFinal(GeneratedResourceBuildItem.class);
    builder.addFinal(TransformedClassesBuildItem.class);
    builder.addFinal(DeploymentResultBuildItem.class);
    boolean nativeRequested = "native".equals(System.getProperty("quarkus.package.type"));
    boolean containerBuildRequested = Boolean.getBoolean("quarkus.container-image.build");
    if (nativeRequested) {
        builder.addFinal(NativeImageBuildItem.class);
    }
    if (containerBuildRequested) {
        // TODO: this is a bit ugly
        // we don't nessesarily need these artifacts
        // but if we include them it does mean that you can auto create docker images
        // and deploy to kube etc
        // for an ordinary build with no native and no docker this is a waste
        builder.addFinal(ArtifactResultBuildItem.class);
    }
    try {
        BuildResult buildResult = builder.build().run();
        Map<String, byte[]> result = new HashMap<>();
        for (GeneratedClassBuildItem i : buildResult.consumeMulti(GeneratedClassBuildItem.class)) {
            result.put(i.getName().replace(".", "/") + ".class", i.getClassData());
        }
        for (GeneratedResourceBuildItem i : buildResult.consumeMulti(GeneratedResourceBuildItem.class)) {
            result.put(i.getName(), i.getClassData());
        }
        for (Map.Entry<Path, Set<TransformedClassesBuildItem.TransformedClass>> entry : buildResult.consume(TransformedClassesBuildItem.class).getTransformedClassesByJar().entrySet()) {
            for (TransformedClassesBuildItem.TransformedClass transformed : entry.getValue()) {
                if (transformed.getData() != null) {
                    result.put(transformed.getFileName(), transformed.getData());
                } else {
                    log.warn("Unable to remove resource " + transformed.getFileName() + " as this is not supported in JBangf");
                }
            }
        }
        resultMap.put("files", result);
        final List<String> javaargs = new ArrayList<>();
        javaargs.add("-Djava.util.logging.manager=org.jboss.logmanager.LogManager");
        javaargs.add("-Djava.util.concurrent.ForkJoinPool.common.threadFactory=io.quarkus.bootstrap.forkjoin.QuarkusForkJoinWorkerThreadFactory");
        resultMap.put("java-args", javaargs);
        resultMap.put("main-class", buildResult.consume(MainClassBuildItem.class).getClassName());
        if (nativeRequested) {
            resultMap.put("native-image", buildResult.consume(NativeImageBuildItem.class).getPath());
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Also used : TransformedClassesBuildItem(io.quarkus.deployment.builditem.TransformedClassesBuildItem) CuratedApplication(io.quarkus.bootstrap.app.CuratedApplication) BuildResult(io.quarkus.builder.BuildResult) DevModeType(io.quarkus.dev.spi.DevModeType) Logger(org.jboss.logging.Logger) BuildStepBuilder(io.quarkus.builder.BuildStepBuilder) LaunchMode(io.quarkus.runtime.LaunchMode) HashMap(java.util.HashMap) AdditionalDependency(io.quarkus.bootstrap.app.AdditionalDependency) ArrayList(java.util.ArrayList) QuarkusAugmentor(io.quarkus.deployment.QuarkusAugmentor) BuildChainBuilder(io.quarkus.builder.BuildChainBuilder) Map(java.util.Map) BiConsumer(java.util.function.BiConsumer) Path(java.nio.file.Path) DeploymentResultBuildItem(io.quarkus.deployment.pkg.builditem.DeploymentResultBuildItem) GeneratedResourceBuildItem(io.quarkus.deployment.builditem.GeneratedResourceBuildItem) ProcessInheritIODisabledBuildItem(io.quarkus.deployment.pkg.builditem.ProcessInheritIODisabledBuildItem) NativeImageBuildItem(io.quarkus.deployment.pkg.builditem.NativeImageBuildItem) ApplicationClassNameBuildItem(io.quarkus.deployment.builditem.ApplicationClassNameBuildItem) Set(java.util.Set) ArtifactResultBuildItem(io.quarkus.deployment.pkg.builditem.ArtifactResultBuildItem) QuarkusClassLoader(io.quarkus.bootstrap.classloading.QuarkusClassLoader) Consumer(java.util.function.Consumer) List(java.util.List) QuarkusBootstrap(io.quarkus.bootstrap.app.QuarkusBootstrap) GeneratedClassBuildItem(io.quarkus.deployment.builditem.GeneratedClassBuildItem) Collections(java.util.Collections) LiveReloadBuildItem(io.quarkus.deployment.builditem.LiveReloadBuildItem) MainClassBuildItem(io.quarkus.deployment.builditem.MainClassBuildItem) LiveReloadBuildItem(io.quarkus.deployment.builditem.LiveReloadBuildItem) Set(java.util.Set) ProcessInheritIODisabledBuildItem(io.quarkus.deployment.pkg.builditem.ProcessInheritIODisabledBuildItem) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) GeneratedClassBuildItem(io.quarkus.deployment.builditem.GeneratedClassBuildItem) AdditionalDependency(io.quarkus.bootstrap.app.AdditionalDependency) Path(java.nio.file.Path) QuarkusAugmentor(io.quarkus.deployment.QuarkusAugmentor) GeneratedResourceBuildItem(io.quarkus.deployment.builditem.GeneratedResourceBuildItem) QuarkusClassLoader(io.quarkus.bootstrap.classloading.QuarkusClassLoader) TransformedClassesBuildItem(io.quarkus.deployment.builditem.TransformedClassesBuildItem) BuildResult(io.quarkus.builder.BuildResult) BuildStepBuilder(io.quarkus.builder.BuildStepBuilder) BuildChainBuilder(io.quarkus.builder.BuildChainBuilder) QuarkusBootstrap(io.quarkus.bootstrap.app.QuarkusBootstrap) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

AdditionalDependency (io.quarkus.bootstrap.app.AdditionalDependency)1 CuratedApplication (io.quarkus.bootstrap.app.CuratedApplication)1 QuarkusBootstrap (io.quarkus.bootstrap.app.QuarkusBootstrap)1 QuarkusClassLoader (io.quarkus.bootstrap.classloading.QuarkusClassLoader)1 BuildChainBuilder (io.quarkus.builder.BuildChainBuilder)1 BuildResult (io.quarkus.builder.BuildResult)1 BuildStepBuilder (io.quarkus.builder.BuildStepBuilder)1 QuarkusAugmentor (io.quarkus.deployment.QuarkusAugmentor)1 ApplicationClassNameBuildItem (io.quarkus.deployment.builditem.ApplicationClassNameBuildItem)1 GeneratedClassBuildItem (io.quarkus.deployment.builditem.GeneratedClassBuildItem)1 GeneratedResourceBuildItem (io.quarkus.deployment.builditem.GeneratedResourceBuildItem)1 LiveReloadBuildItem (io.quarkus.deployment.builditem.LiveReloadBuildItem)1 MainClassBuildItem (io.quarkus.deployment.builditem.MainClassBuildItem)1 TransformedClassesBuildItem (io.quarkus.deployment.builditem.TransformedClassesBuildItem)1 ArtifactResultBuildItem (io.quarkus.deployment.pkg.builditem.ArtifactResultBuildItem)1 DeploymentResultBuildItem (io.quarkus.deployment.pkg.builditem.DeploymentResultBuildItem)1 NativeImageBuildItem (io.quarkus.deployment.pkg.builditem.NativeImageBuildItem)1 ProcessInheritIODisabledBuildItem (io.quarkus.deployment.pkg.builditem.ProcessInheritIODisabledBuildItem)1 DevModeType (io.quarkus.dev.spi.DevModeType)1 LaunchMode (io.quarkus.runtime.LaunchMode)1