From 8dfb600251f56b0ae7afaee4caf51dd031f0be95 Mon Sep 17 00:00:00 2001 From: Nightenom <17338378+Nightenom@users.noreply.github.com> Date: Wed, 24 Jan 2024 18:01:04 +0100 Subject: [PATCH 1/3] Add sync tasks for eclipse resources Update IdeRunIntegrationManager.java --- .gitignore | 1 + .../runs/ide/IdeRunIntegrationManager.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/.gitignore b/.gitignore index b6e6335b8..66ea833ed 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ repo .classpath .project bin +/.vscode/ # intellij out diff --git a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java index 56b935b8c..44e1d7013 100644 --- a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java +++ b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java @@ -22,8 +22,10 @@ import org.gradle.api.plugins.ExtensionAware; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.Copy; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskProvider; +import org.gradle.language.jvm.tasks.ProcessResources; import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.gradle.plugins.ide.idea.model.IdeaModel; import org.gradle.plugins.ide.idea.model.IdeaProject; @@ -34,6 +36,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.UncheckedIOException; +import java.nio.file.Path; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -133,6 +136,7 @@ public void eclipse(Project project, EclipseModel eclipse) { final RunImpl runImpl = (RunImpl) run; final TaskProvider ideBeforeRunTask = createIdeBeforeRunTask(project, name, run, runImpl); + addEclipseCopyResourcesTasks(eclipse, run); try { final GradleLaunchConfig idePreRunTask = GradleLaunchConfig.builder(eclipse.getProject().getName()) @@ -210,6 +214,34 @@ private TaskProvider createIdeBeforeRunTask(Project project, String name, Run return ideBeforeRunTask; } + private void addEclipseCopyResourcesTasks(EclipseModel eclipse, Run run) { + for (SourceSet sourceSet : run.getModSources().get()) { + final Project sourceSetProject = SourceSetUtils.getProject(sourceSet); + + final String taskName = CommonRuntimeUtils.buildTaskName("eclipseCopy", sourceSet.getProcessResourcesTaskName()); + final TaskProvider eclipseResourcesTask; + + if (sourceSetProject.getTasks().findByName(taskName) != null) { + eclipseResourcesTask = sourceSetProject.getTasks().named(taskName); + } + else { + eclipseResourcesTask = sourceSetProject.getTasks().register(taskName, Copy.class, task -> { + final TaskProvider defaultProcessResources = sourceSetProject.getTasks().named(sourceSet.getProcessResourcesTaskName(), ProcessResources.class); + task.from(defaultProcessResources.get().getDestinationDir()); + Path outputDir = eclipse.getClasspath().getDefaultOutputDir().toPath(); + if (outputDir.endsWith("default")) { + outputDir = outputDir.getParent(); + } + task.into(outputDir.resolve(sourceSet.getName())); + + task.dependsOn(defaultProcessResources); + }); + } + + eclipse.autoBuildTasks(eclipseResourcesTask); + } + } + private static void writeLaunchToFile(Project project, String fileName, LaunchConfig config) { final File file = project.file(String.format(".eclipse/configurations/%s.launch", fileName)); file.getParentFile().mkdirs(); From fef458262399f6d3861f678cc20179ae2aa5a056 Mon Sep 17 00:00:00 2001 From: Nightenom <17338378+Nightenom@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:52:36 +0100 Subject: [PATCH 2/3] Add comment to edge case --- .../gradle/common/runs/ide/IdeRunIntegrationManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java index 44e1d7013..71d545816 100644 --- a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java +++ b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java @@ -230,6 +230,9 @@ private void addEclipseCopyResourcesTasks(EclipseModel eclipse, Run run) { task.from(defaultProcessResources.get().getDestinationDir()); Path outputDir = eclipse.getClasspath().getDefaultOutputDir().toPath(); if (outputDir.endsWith("default")) { + // sometimes it has default value from org.gradle.plugins.ide.eclipse.internal.EclipsePluginConstants#DEFAULT_PROJECT_OUTPUT_PATH + // which has /default on end that is not present in the final outputDir in eclipse/buildship + // (output of getDefaultOutputDir() should be just project/bin/) outputDir = outputDir.getParent(); } task.into(outputDir.resolve(sourceSet.getName())); From 46c90675e1c750f22a91a93eb1b6b4906a9ff0bc Mon Sep 17 00:00:00 2001 From: Nightenom <17338378+Nightenom@users.noreply.github.com> Date: Tue, 6 Feb 2024 11:32:55 +0100 Subject: [PATCH 3/3] Add to debug task, not exactly correct, but should work ~= logically same as fg solution --- .../gradle/common/runs/ide/IdeRunIntegrationManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java index 71d545816..83513ead8 100644 --- a/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java +++ b/common/src/main/java/net/neoforged/gradle/common/runs/ide/IdeRunIntegrationManager.java @@ -40,6 +40,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -136,7 +137,7 @@ public void eclipse(Project project, EclipseModel eclipse) { final RunImpl runImpl = (RunImpl) run; final TaskProvider ideBeforeRunTask = createIdeBeforeRunTask(project, name, run, runImpl); - addEclipseCopyResourcesTasks(eclipse, run); + ideBeforeRunTask.configure(task -> addEclipseCopyResourcesTasks(eclipse, run, t -> task.dependsOn(t))); try { final GradleLaunchConfig idePreRunTask = GradleLaunchConfig.builder(eclipse.getProject().getName()) @@ -214,7 +215,7 @@ private TaskProvider createIdeBeforeRunTask(Project project, String name, Run return ideBeforeRunTask; } - private void addEclipseCopyResourcesTasks(EclipseModel eclipse, Run run) { + private void addEclipseCopyResourcesTasks(EclipseModel eclipse, Run run, Consumer> tasksConsumer) { for (SourceSet sourceSet : run.getModSources().get()) { final Project sourceSetProject = SourceSetUtils.getProject(sourceSet); @@ -241,7 +242,7 @@ private void addEclipseCopyResourcesTasks(EclipseModel eclipse, Run run) { }); } - eclipse.autoBuildTasks(eclipseResourcesTask); + tasksConsumer.accept(eclipseResourcesTask); } }