in src/utils/Utils.ts [222:268]
export async function executeMavenCommand(node?: any): Promise<void> {
let selectedProject: MavenProject | undefined;
let selectedCommand: string | undefined;
if (node instanceof LifecyclePhase) {
selectedProject = node.project;
selectedCommand = node.phase;
} else if (node && node.uri) {
// for nodes from Project Manager
const pomPath: string = path.join(Uri.parse(node.uri).fsPath, "pom.xml");
selectedProject = mavenExplorerProvider.mavenProjectNodes.find(project => project.pomPath.toLowerCase() === pomPath.toLowerCase());
}
// select a project(pomfile)
if (!selectedProject) {
selectedProject = await selectProjectIfNecessary();
}
if (!selectedProject) {
return;
}
// select a command if not provided
if (!selectedCommand) {
const LABEL_CUSTOM: string = "Custom ...";
const LABEL_FAVORITES: string = "Favorites ...";
selectedCommand = await window.showQuickPick(
[LABEL_FAVORITES, LABEL_CUSTOM, "clean", "validate", "compile", "test", "package", "verify", "install", "site", "deploy"],
{ placeHolder: "Select the goal to execute ...", ignoreFocusOut: true }
);
if (!selectedCommand) {
return;
}
switch (selectedCommand) {
case LABEL_CUSTOM:
await commands.executeCommand("maven.goal.custom", selectedProject);
return;
case LABEL_FAVORITES:
await commands.executeCommand("maven.favorites", selectedProject);
return;
default:
break;
}
}
await commands.executeCommand(`maven.goal.${selectedCommand}`, selectedProject);
}