Skip to content

Commit

Permalink
Print maven build output
Browse files Browse the repository at this point in the history
  • Loading branch information
lincolnthree committed Jun 11, 2013
1 parent 1407f67 commit 881f1b8
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package org.jboss.forge.addon.manager.impl.commands;

import javax.inject.Inject;

import org.jboss.forge.addon.dependencies.Coordinate;
import org.jboss.forge.addon.manager.AddonManager;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.building.BuildException;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.projects.facets.PackagingFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.ui.AbstractUICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UISelection;
import org.jboss.forge.addon.ui.input.UIInput;
import org.jboss.forge.addon.ui.metadata.WithAttributes;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.util.Addons;

public class AddonBuildAndInstallCommand extends AbstractUICommand implements AddonCommandConstants
{

@Inject
private AddonManager addonManager;

@Inject
@WithAttributes(label = "Project directory", description = "The location of the project (contains pom.xml)", required = true)
private UIInput<DirectoryResource> projectRoot;

@Inject
private ProjectFactory projectFactory;

@Inject
private AddonRegistry registry;

private Project project;

@Override
public Metadata getMetadata()
{
return super.getMetadata().name(ADDON_BUILD_INSTALL_COMMAND_NAME)
.description(ADDON_BUILD_INSTALL_COMMAND_DESCRIPTION)
.category(Categories.create(ADDON_MANAGER_CATEGORIES));
}

@Override
public boolean isEnabled(UIContext context)
{
project = getSelectedProject(context);
return project != null;
}

@Override
public void initializeUI(UIBuilder builder) throws Exception
{
if (project != null)
{
projectRoot.setDefaultValue(project.getProjectRoot());
}
builder.add(projectRoot);
}

@Override
public Result execute(UIContext context)
{
Coordinate coordinate = project.getFacet(MetadataFacet.class).getOutputDependency().getCoordinate();
try
{
// TODO Project builder should support clean and install in the native API.
project.getFacet(PackagingFacet.class).createBuilder().addArguments("clean", "install").build();
}
catch (BuildException e)
{
return Results.fail("Unable to execute project build", e);
}

try
{
AddonId id = AddonId.from(coordinate.getGroupId() + ":" + coordinate.getArtifactId(), coordinate.getVersion());
addonManager.remove(id).perform();
Addons.waitUntilStopped(registry.getAddon(id));
addonManager.install(id).perform();
return Results.success("Addon " + coordinate.toString() + " was installed succesfully.");
}
catch (Throwable t)
{
return Results.fail("Addon " + coordinate.toString() + " could not be installed.", t);
}
}

/**
* Returns the selected project. null if no project is found
*/
protected Project getSelectedProject(UIContext context)
{
Project project = null;
UISelection<FileResource<?>> initialSelection = context.getInitialSelection();
if (!initialSelection.isEmpty())
{
project = projectFactory.findProject(initialSelection.get());
}
return project;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ public interface AddonCommandConstants
{
String[] ADDON_MANAGER_CATEGORIES = { "Addon", "Manage" };
String ADDON_INSTALL_COMMAND_NAME = "Install an Addon";
String ADDON_BUILD_INSTALL_COMMAND_NAME = "Build and Install an Addon";
String ADDON_INSTALL_COMMAND_DESCRIPTION = "Command to install a Furnace 2 addon.";
String ADDON_BUILD_INSTALL_COMMAND_DESCRIPTION = "Command to build and install a Furnace 2 addon.";
String ADDON_REMOVE_COMMAND_NAME = "Remove an Addon";
String ADDON_REMOVE_COMMAND_DESCRIPTION = "Command to remove a Furnace 2 addon.";
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.maven.dependencies.MavenContainer;
import org.jboss.forge.addon.maven.environment.Network;
import org.jboss.forge.addon.maven.projects.MavenFacet;
import org.jboss.forge.addon.maven.projects.util.NativeSystemCall;
import org.jboss.forge.addon.maven.projects.util.NullOutputStream;
import org.jboss.forge.addon.maven.projects.util.RepositoryUtils;
import org.jboss.forge.addon.maven.resources.MavenPomResource;
import org.jboss.forge.addon.projects.Project;
Expand Down Expand Up @@ -347,10 +345,10 @@ public boolean executeMaven(final List<String> parameters)
return executeMaven(parameters.toArray(new String[] {}));
}

@SuppressWarnings("resource")
public boolean executeMaven(final String[] selected)
{
return executeMaven(new NullOutputStream(), selected);
// return executeMaven(new NullOutputStream(), selected);
return executeMaven(System.out, selected);
}

public boolean executeMaven(final OutputStream out, final String[] parms)
Expand Down

0 comments on commit 881f1b8

Please sign in to comment.