in src/handlers/addDependencyHandler.ts [14:68]
export async function addDependencyHandler(options?: any): Promise<void> {
let pomPath: string;
if (options && options.pomPath) {
// for nodes from Maven explorer
pomPath = options.pomPath;
} else if (options && options.projectBasePath) {
// for "Maven dependencies" nodes from Project Manager
pomPath = path.join(options.projectBasePath, "pom.xml");
} else if (options?.project?.pomPath) {
// for "Dependencies" node from module in Maven explorer
pomPath = options.project.pomPath;
} else {
// select a project(pomfile)
const selectedProject: MavenProject | undefined = await selectProjectIfNecessary();
if (!selectedProject) {
return;
}
pomPath = selectedProject.pomPath;
}
if (!await fse.pathExists(pomPath)) {
throw new UserError("Specified POM file does not exist on file system.");
}
// check if another extension has passed a dependency to add on its own
if (options && options.groupId && options.artifactId && options.version) {
await addDependency(pomPath, options.groupId, options.artifactId, options.version, options.packaging, options.classifier);
}
else {
const keywordString: string | undefined = await vscode.window.showInputBox({
ignoreFocusOut: true,
prompt: "Input keywords to search artifacts from Maven Central Repository.",
placeHolder: "e.g. spring azure storage",
validateInput: (text: string) => {
if (text.trim().length < 3) {
return "Keywords are too short.";
}
return undefined;
}
});
if (!keywordString) {
return;
}
const selectedDoc: IArtifactMetadata | undefined = await vscode.window.showQuickPick<vscode.QuickPickItem & { value: IArtifactMetadata }>(
getArtifacts(keywordString.trim().split(/[-,. :]/)).then(artifacts => artifacts.map(artifact => ({ value: artifact, label: `$(package) ${artifact.a}`, description: artifact.g }))),
{ placeHolder: "Select a dependency ..." }
).then(selected => selected ? selected.value : undefined);
if (!selectedDoc) {
return;
}
await addDependency(pomPath, selectedDoc.g, selectedDoc.a, selectedDoc.latestVersion, selectedDoc.p, undefined);
}
}