in src/exportJarSteps/ExportJarTaskProvider.ts [115:162]
public async provideTasks(): Promise<Task[] | undefined> {
const folders: readonly WorkspaceFolder[] = workspace.workspaceFolders || [];
if (_.isEmpty(folders)) {
return undefined;
}
if (!_.isEmpty(this.tasks)) {
return this.tasks;
}
this.tasks = [];
for (const folder of folders) {
const projectList: INodeData[] = await Jdtls.getProjects(folder.uri.toString());
const elementList: string[] = [];
if (_.isEmpty(projectList)) {
continue;
} else if (projectList.length === 1) {
elementList.push("${" + ExportJarConstants.COMPILE_OUTPUT + "}",
"${" + ExportJarConstants.DEPENDENCIES + "}");
} else {
for (const project of projectList) {
elementList.push("${" + ExportJarConstants.COMPILE_OUTPUT + ":" + project.name + "}",
"${" + ExportJarConstants.DEPENDENCIES + ":" + project.name + "}");
}
}
const mainClasses: IMainClassInfo[] = await Jdtls.getMainClasses(folder.uri.toString());
const defaultDefinition: IExportJarTaskDefinition = {
type: ExportJarTaskProvider.exportJarType,
mainClass: (mainClasses.length === 1) ? mainClasses[0].name : undefined,
targetPath: Settings.getExportJarTargetPath(),
elements: elementList,
};
const defaultTask: Task = new Task(defaultDefinition, folder, `exportjar:${folder.name}`, ExportJarTaskProvider.exportJarType,
new CustomExecution(async (resolvedDefinition: IExportJarTaskDefinition): Promise<Pseudoterminal> => {
const stepMetadata: IStepMetadata = {
entry: undefined,
taskLabel: resolvedDefinition.label || `exportjar:${folder.name}`,
workspaceFolder: folder,
projectList: await Jdtls.getProjects(folder.uri.toString()),
steps: [],
elements: [],
classpaths: [],
};
return new ExportJarTaskTerminal(resolvedDefinition, stepMetadata);
}), undefined);
defaultTask.presentationOptions.reveal = TaskRevealKind.Never;
this.tasks.push(defaultTask);
}
return this.tasks;
}