Search in sources :

Example 1 with CommandConfiguration

use of org.wildfly.plugin.cli.CommandConfiguration in project wildfly-maven-plugin by wildfly.

the class RunMojo method execute.

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    if (skip) {
        return;
    }
    MavenRepositoriesEnricher.enrich(mavenSession, project, repositories);
    mavenRepoManager = new MavenArtifactRepositoryManager(repoSystem, session, repositories);
    final Log log = getLog();
    final Path deploymentContent = getDeploymentContent();
    // The deployment must exist before we do anything
    if (Files.notExists(deploymentContent)) {
        throw new MojoExecutionException(String.format("The deployment '%s' could not be found.", deploymentContent.toAbsolutePath()));
    }
    // Validate the environment
    final Path wildflyPath = provisionIfRequired(deploymentContent.getParent().resolve(provisioningDir));
    if (!ServerHelper.isValidHomeDirectory(wildflyPath)) {
        throw new MojoExecutionException(String.format("JBOSS_HOME '%s' is not a valid directory.", wildflyPath));
    }
    final StandaloneCommandBuilder commandBuilder = createCommandBuilder(wildflyPath);
    // Print some server information
    log.info("JAVA_HOME : " + commandBuilder.getJavaHome());
    log.info("JBOSS_HOME: " + commandBuilder.getWildFlyHome());
    log.info("JAVA_OPTS : " + Utils.toString(commandBuilder.getJavaOptions(), " "));
    try {
        if (addUser != null && addUser.hasUsers()) {
            log.info("Adding users: " + addUser);
            addUser.addUsers(commandBuilder.getWildFlyHome(), commandBuilder.getJavaHome());
        }
        // Start the server
        log.info("Server is starting up. Press CTRL + C to stop the server.");
        Process process = startContainer(commandBuilder);
        try (ModelControllerClient client = createClient()) {
            // Execute commands before the deployment is done
            final CommandConfiguration cmdConfig = CommandConfiguration.of(this::createClient, this::getClientConfiguration).addCommands(commands).addScripts(scripts).setJBossHome(commandBuilder.getWildFlyHome()).setFork(true).setStdout("none").setTimeout(timeout).build();
            commandExecutor.execute(cmdConfig, mavenRepoManager);
            // Create the deployment and deploy
            final Deployment deployment = Deployment.of(deploymentContent).setName(name).setRuntimeName(runtimeName);
            final DeploymentManager deploymentManager = DeploymentManager.Factory.create(client);
            deploymentManager.forceDeploy(deployment);
        } catch (MojoExecutionException | MojoFailureException e) {
            if (process != null) {
                process.destroyForcibly().waitFor(10L, TimeUnit.SECONDS);
            }
            throw e;
        }
        try {
            // Wait for the process to die
            boolean keepRunning = true;
            while (keepRunning) {
                final int exitCode = process.waitFor();
                // 10 is the magic code used in the scripts to survive a :shutdown(restart=true) operation
                if (exitCode == 10) {
                    // Ensure the current process is destroyed and restart a new one
                    process.destroy();
                    process = startContainer(commandBuilder);
                } else {
                    keepRunning = false;
                }
            }
        } catch (Exception e) {
            throw new MojoExecutionException("The server failed to start", e);
        } finally {
            if (process != null)
                process.destroy();
        }
    } catch (Exception e) {
        throw new MojoExecutionException("The server failed to start", e);
    }
}
Also used : Path(java.nio.file.Path) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) Log(org.apache.maven.plugin.logging.Log) CommandConfiguration(org.wildfly.plugin.cli.CommandConfiguration) DeploymentManager(org.wildfly.plugin.core.DeploymentManager) MojoFailureException(org.apache.maven.plugin.MojoFailureException) Deployment(org.wildfly.plugin.core.Deployment) TimeoutException(java.util.concurrent.TimeoutException) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MojoFailureException(org.apache.maven.plugin.MojoFailureException) ProvisioningException(org.jboss.galleon.ProvisioningException) StandaloneCommandBuilder(org.wildfly.core.launcher.StandaloneCommandBuilder) ModelControllerClient(org.jboss.as.controller.client.ModelControllerClient) MavenArtifactRepositoryManager(org.jboss.galleon.maven.plugin.util.MavenArtifactRepositoryManager)

Aggregations

IOException (java.io.IOException)1 Path (java.nio.file.Path)1 TimeoutException (java.util.concurrent.TimeoutException)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 MojoFailureException (org.apache.maven.plugin.MojoFailureException)1 Log (org.apache.maven.plugin.logging.Log)1 ModelControllerClient (org.jboss.as.controller.client.ModelControllerClient)1 ProvisioningException (org.jboss.galleon.ProvisioningException)1 MavenArtifactRepositoryManager (org.jboss.galleon.maven.plugin.util.MavenArtifactRepositoryManager)1 StandaloneCommandBuilder (org.wildfly.core.launcher.StandaloneCommandBuilder)1 CommandConfiguration (org.wildfly.plugin.cli.CommandConfiguration)1 Deployment (org.wildfly.plugin.core.Deployment)1 DeploymentManager (org.wildfly.plugin.core.DeploymentManager)1