feat(gradle): link and unlink independent Gradle builds (#1413)

Opening a folder of independent Gradle builds selected only the first build. Link Gradle Projects… (pick a build's settings or build file) and Unlink on a build's root let an ordinary project window manage several independent builds without changing their scripts. The build model holds a list of Gradle builds; each keeps its own wrapper, working directory, environment, task routing and sync cache, keyed by the owning build directory. The links persist in the project's Gradle settings (linkedProjects); unlinking leaves files and saved run configurations alone. Existing includeBuild support is unchanged, and an explicitly linked build takes precedence over a composite that also includes it. Workspace windows keep Link/Unlink disabled.

Co-authored-by: gudcks0305 <[email protected]>
Цей коміт міститься в:
yoo hyeong chan authored and GitHub committed 2026-11-05 11:23:39 +08:00
1 джерело 682fee633d
коміт 0dfdbbc323
43 files changed
+1846 -254

No files matched your search

+12
Переглянути файл
@@ -123,3 +123,15 @@ describe("module group nodes in the tree", () => {
expect(m.children.get(m.roots[0]!.key)!.map((n) => n.label)).toEqual(["billing", "core"]);
});
});
it("namespaces module group identities by independently linked build", () => {
const projects = [
{ path: ":", dir: "/w/first" },
{ path: ":app", dir: "/w/shared" },
];
const first = gradleModuleGroups(projects, "same", "/w/project", "first");
const second = gradleModuleGroups(projects, "same", "/w/project", "second");
expect(first.length).toBeGreaterThan(0);
expect(first[0]!.id).not.toBe(second[0]!.id);
expect(first.map(shape)).toEqual(second.map(shape));
});