Skip to content

Instantly share code, notes, and snippets.

@gastaldi
Created March 7, 2016 18:56
Show Gist options
  • Select an option

  • Save gastaldi/330258d86ed21ceca38b to your computer and use it in GitHub Desktop.

Select an option

Save gastaldi/330258d86ed21ceca38b to your computer and use it in GitHub Desktop.
Forge command to add Spring boot dependencies
package org.myaddon.commands;
import javax.inject.Inject;
import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Plugin;
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
import org.jboss.forge.addon.maven.projects.MavenFacet;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.ui.AbstractProjectCommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
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;
public class AddSpringDependenciesCommand extends AbstractProjectCommand {
@Inject
private ProjectFactory projectFactory;
@Override
public UICommandMetadata getMetadata(UIContext context) {
return Metadata.forCommand(AddSpringDependenciesCommand.class).category(Categories.create("Spring Boot"))
.name("spring-boot-setup");
}
@Override
public void initializeUI(UIBuilder builder) throws Exception {
}
@Override
public Result execute(UIExecutionContext context) throws Exception {
Project project = getSelectedProject(context);
MavenFacet mavenFacet = project.getFacet(MavenFacet.class);
Model model = mavenFacet.getModel();
Parent parent = new Parent();
parent.setGroupId("org.springframework.boot");
parent.setArtifactId("spring-boot-starter-parent");
parent.setVersion("1.3.3.RELEASE");
parent.setRelativePath("");
model.setParent(parent);
{
Dependency dep = new Dependency();
dep.setGroupId("org.springframework.boot");
dep.setArtifactId("spring-boot-starter");
model.getDependencies().add(dep);
}
{
Dependency dep = new Dependency();
dep.setGroupId("org.springframework.boot");
dep.setArtifactId("spring-boot-starter-test");
dep.setScope("test");
model.getDependencies().add(dep);
}
Build build = new Build();
Plugin plugin = new Plugin();
plugin.setGroupId("org.springframework.boot");
plugin.setArtifactId("spring-boot-maven-plugin");
build.addPlugin(plugin);
model.setBuild(build);
mavenFacet.setModel(model);
return Results.success("Command 'spring-boot' successfully executed!");
}
@Override
protected boolean isProjectRequired() {
return true;
}
@Override
protected ProjectFactory getProjectFactory() {
return projectFactory;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment