Skip to content

Commit 3948146

Browse files
authored
faet: Add dependency to Maven projects (#230)
1 parent d669d15 commit 3948146

File tree

6 files changed

+44
-1
lines changed

6 files changed

+44
-1
lines changed

package.json

+22
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@
4848
"light": "images/light/icon-add.svg"
4949
}
5050
},
51+
{
52+
"command": "java.project.maven.addDependency",
53+
"title": "%contributes.commands.java.project.maven.addDependency%",
54+
"category": "Java",
55+
"icon": {
56+
"dark": "images/dark/icon-add.svg",
57+
"light": "images/light/icon-add.svg"
58+
}
59+
},
5160
{
5261
"command": "java.project.removeLibrary",
5362
"title": "%contributes.commands.java.project.removeLibrary%",
@@ -176,6 +185,14 @@
176185
"command": "java.view.package.copyRelativeFilePath",
177186
"when": "never"
178187
},
188+
{
189+
"command": "java.project.addLibraries",
190+
"when": "never"
191+
},
192+
{
193+
"command": "java.project.maven.addDependency",
194+
"when": "never"
195+
},
179196
{
180197
"command": "java.project.removeLibrary",
181198
"when": "never"
@@ -242,6 +259,11 @@
242259
"command": "java.project.refreshLibraries",
243260
"when": "view == javaDependencyExplorer && viewItem =~ /java:container\/referenced-libraries$/",
244261
"group": "inline@1"
262+
},
263+
{
264+
"command": "java.project.maven.addDependency",
265+
"when": "view == javaDependencyExplorer && viewItem =~ /container\/maven-dependencies/",
266+
"group": "inline@0"
245267
}
246268
]
247269
},

package.nls.json

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"description": "Manage Java Dependencies in VSCode",
33
"contributes.commands.java.project.create": "Create Java Project",
44
"contributes.commands.java.project.addLibraries": "Add a jar file or a folder to project classpath",
5+
"contributes.commands.java.project.maven.addDependency": "Add a new dependency to the Maven project",
56
"contributes.commands.java.project.removeLibrary": "Remove jar file from project classpath",
67
"contributes.commands.java.view.package.refresh": "Refresh",
78
"contributes.commands.java.view.package.changeRepresentation": "Change package representation",

package.nls.zh.json

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"description": "在 VSCode 中管理 Java 依赖项",
33
"contributes.commands.java.project.create": "创建 Java 项目",
44
"contributes.commands.java.project.addLibraries": "将一个 Jar 文件或一个目录添加到 Java 项目类路径中",
5+
"contributes.commands.java.project.maven.addDependency": "为该 Maven 项目增加依赖库",
56
"contributes.commands.java.project.removeLibrary": "将该 Jar 文件从 Java 项目类路径中移除",
67
"contributes.commands.java.view.package.refresh": "刷新",
78
"contributes.commands.java.view.package.changeRepresentation": "更改包展示形式",

src/commands.ts

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export namespace Commands {
3838

3939
export const JAVA_PROJECT_REFRESH_LIBRARIES = "java.project.refreshLibraries";
4040

41+
export const JAVA_MAVEN_PROJECT_ADD_DEPENDENCY = "java.project.maven.addDependency";
42+
4143
export const JAVA_PROJECT_LIST = "java.project.list";
4244

4345
export const JAVA_PROJECT_REFRESH_LIB_SERVER = "java.project.refreshLib";

src/controllers/libraryController.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import * as fse from "fs-extra";
55
import * as _ from "lodash";
66
import * as minimatch from "minimatch";
77
import * as path from "path";
8-
import { Disposable, ExtensionContext, Uri, window, workspace, WorkspaceFolder } from "vscode";
8+
import { commands, Disposable, ExtensionContext, Uri, window, workspace, WorkspaceFolder } from "vscode";
99
import { instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper";
1010
import { Commands } from "../commands";
1111
import { Jdtls } from "../java/jdtls";
1212
import { Settings } from "../settings";
1313
import { Utility } from "../utility";
14+
import { ContainerNode } from "../views/containerNode";
1415
import { DataNode } from "../views/dataNode";
1516

1617
export class LibraryController implements Disposable {
@@ -24,13 +25,24 @@ export class LibraryController implements Disposable {
2425
this.removeLibrary(Uri.parse(node.uri).fsPath)),
2526
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REFRESH_LIBRARIES, () =>
2627
this.refreshLibraries()),
28+
instrumentOperationAsVsCodeCommand(Commands.JAVA_MAVEN_PROJECT_ADD_DEPENDENCY, (node: ContainerNode) =>
29+
this.addMavenDependency(node)),
2730
);
2831
}
2932

3033
public dispose() {
3134
this.disposable.dispose();
3235
}
3336

37+
public async addMavenDependency(node: ContainerNode) {
38+
const pomPath: string = path.join(node.projectBasePath, "pom.xml");
39+
if (await fse.pathExists(pomPath)) {
40+
commands.executeCommand("maven.project.addDependency", { pomPath });
41+
} else {
42+
commands.executeCommand("maven.project.addDependency");
43+
}
44+
}
45+
3446
public async addLibraries(libraryGlobs?: string[]) {
3547
if (!libraryGlobs) {
3648
libraryGlobs = [];

src/views/containerNode.ts

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

4+
import { Uri } from "vscode";
45
import { Jdtls } from "../java/jdtls";
56
import { INodeData, NodeKind } from "../java/nodeData";
67
import { DataNode } from "./dataNode";
@@ -13,6 +14,10 @@ export class ContainerNode extends DataNode {
1314
super(nodeData, parent);
1415
}
1516

17+
public get projectBasePath() {
18+
return Uri.parse(this._project.uri).fsPath;
19+
}
20+
1621
protected loadData(): Thenable<INodeData[]> {
1722
return Jdtls.getPackageData({ kind: NodeKind.Container, projectUri: this._project.uri, path: this.path });
1823
}

0 commit comments

Comments
 (0)