Skip to content

Java Project Manager

issuelens[bot] edited this page Oct 15, 2026 · 6 revisions

Java Project Manager

Purpose and boundaries

microsoft/vscode-java-dependency provides the Java Projects tree and project/library-management UI in VS Code. DependencyExplorer creates the javaProjectExplorer tree with DependencyDataProvider; it also reveals selected resources through the project data returned by the language-server command bridge. This is presentation and extension-side orchestration, not JDTLS project import or dependency resolution.

Referenced-library commands update the java.project.referencedLibraries configuration through Settings; an explicit refresh then invokes the JDTLS-side java.project.refreshLib command for the default workspace folder. A configuration change should therefore not be treated as proof that a server refresh or build-tool resolution succeeded.

Extension–language-server boundary

LanguageServerApiManager activates redhat.java, observes server readiness and classpath/project-import events, and refreshes or progressively adds tree data as appropriate. The Jdtls namespace sends project, package, path, library-refresh, main-class, dependency, and JAR-generation requests through the Java language client's workspace-command bridge.

The bundled JDTLS extension contributes delegate commands including java.project.list, java.project.refreshLib, java.getPackageData, java.resolvePath, java.project.getMainClasses, and java.project.generateJar, plus a jdt://jarentry/.* content provider. Those handlers run in JDTLS; they are distinct from the VS Code tree renderer.

Spanish localization

At source commit eb3fba04f2763416b25833d92df4fb0210a9d668, PR #1101 adds package.nls.es.json with Spanish values for all 70 keys in package.nls.json. Coverage includes the extension description, command/submenu labels, configuration descriptions, build/JAR-export task descriptions, and welcome messages, including Create Java Project. The viewsWelcome.workbench.* translations preserve the base messages' command URIs and encoded arguments. This is localization-resource coverage, not a claim that every runtime message or adjacent Java tooling component is translated; the JSON-only change does not alter command implementations or establish Marketplace release availability.

CI build runtime

At source commit fadfec5fa6bfd6f84d79ff5e60b6d18561871ea0, merged by PR #1100, GitHub Actions CI and E2E workflows use Temurin JDK 25. Azure CFS validation/CI uses Java 25, while the Windows nightly and RC pipelines download Microsoft JDK 25 and install it as Java 25 before building. This is CI/build-environment configuration, not a statement of an end-user runtime requirement, release status, or deployment.

Integration-test fixture and failure diagnostics

Verified at source commit 5a62e6664de42701234dda83043400caa6797a05, merged by PR #1108 (source identity microsoft/vscode-java-dependency#1108:5a62e6664de42701234dda83043400caa6797a05):

  • The Gradle integration fixture's test/gradle/.vscode/settings.json selects java.import.gradle.version: "9.1.0" instead of 7.3 and retains java.server.launchMode: "Standard". CONTRIBUTING.md documents the fixture upgrade in the context of JDK 25 used by the Java extension. This is test-fixture configuration, not a general user-project Gradle requirement or independently verified upstream compatibility guarantee.
  • package.json's npm test compiles TypeScript, bundles with development webpack, and runs dist/test/index.js. In test/index.ts, main creates and prints a temporary VS Code user-data directory, passes it as --user-data-dir to the hosted suites, and appends JAVA_TEST_USER_DIR=<path> to GITHUB_ENV when available so subsequent Actions steps can locate that profile. The runner installs redhat.java without a version pin; the PR's reported validation versions are not a runner guarantee.
  • Failure-only log steps in Linux, macOS, and Windows search the actual JAVA_TEST_USER_DIR/User/workspaceStorage for redhat.java/jdt_ws/.metadata/.log, rather than the default user profile. Windows includes hidden files with Get-ChildItem -Force. Missing exported profile/storage produces a warning and skips collection; it means diagnostics are unavailable (the test host may not have started), not that tests passed or the language server had no errors. These are source-backed diagnostic paths, not confirmation of a successful CI run.

Source version and changelog provenance

At source commit 5a62e6664de42701234dda83043400caa6797a05, PR #1108 sets the manifest and lockfile root versions to 0.27.7 (package.json, package-lock.json). The new CHANGELOG.md section references seven user-facing PRs: #1061, #1063, #1074, #1075, #1078, #1099, and #1101. This records source metadata and changelog provenance only; those earlier implementations were not revalidated by this reconciliation, and a merged version bump does not establish Marketplace publication or deployment.

Issue triage automation

Verified at merged/source-tip commit a9671ce1769852c55bee9e821e4889f9223b8325, PR #1109; source identity microsoft/vscode-java-dependency#1109:a9671ce1769852c55bee9e821e4889f9223b8325:

.github/workflows/issuelens-run.yml, jobs.triage, pins the IssueLens issue-loop action to microsoft/IssueLens/.github/actions/issuelens@a81d2d96167fc0e69ac631c2edc85f858e693289, replacing 49df3d97547069f891a68248be6ed722c2aeca2f. The complete one-file PR changes only this action reference; it does not change the separate team-memory/coordinator workflows. The triage job retains its configured 20-minute Actions timeout. This is consumer workflow configuration, not verification of external action internals, HTTP stream timeout behavior, or a successful live triage run.

Team-memory workflow and recovery

At source commit 332bfdc2bf563b10470e20825564d5334ad4b26d, PR #1103 changes the repository's .github/workflows/team-memory-post-merge.yml from closed-PR events to pushes on main. Manual recovery remains available through workflow_dispatch with the required string input pull_request_number identifying a merged PR.

The workflow's jobs.team-memory.if requires ISSUELENS_TEAM_MEMORY_ENABLED == 'true', the current default-branch ref, and either a push or manual-dispatch event. It runs on ubuntu-latest with a 30-minute timeout and invokes microsoft/IssueLens/.github/actions/issuelens@2b5317815e15179899014a02c41678620ce2d390 with request-type: team-memory, activity output, and a status summary. Top-level permissions are empty; job permissions are contents: read, pull-requests: read, and id-token: write. These are caller configuration facts from the workflow above, not verification of the external action's implementation or a successful live run.

The same workflow's concurrency key is repository-specific and selects the push's github.event.after, otherwise the manual PR number, otherwise the run ID; cancel-in-progress is false. Different push SHAs therefore have different keys. This is not a shared-wiki lock: the accompanying maintenance concurrency note retains snapshot-based compare-and-swap because other repositories can update the shared wiki.

PR #1103 identifies an operational prerequisite: Azure OIDC federation must accept the default-branch subject repo:microsoft/vscode-java-dependency:ref:refs/heads/main for push/manual runs, accounting for any subject customization. Federation was not inspected or changed by that PR; a merge does not establish that federation, opt-in, deployment, or live publication is working.

Sources

Verified at source commit 1864fba4d145876808fe557a8dce82e45400e353, merged by PR #1098:

CI runtime verified at source commit fadfec5fa6bfd6f84d79ff5e60b6d18561871ea0, merged by PR #1100:

Clone this wiki locally