Skip to content

Commit

Permalink
Remove unnecessary task dependencies (#1567)
Browse files Browse the repository at this point in the history
  • Loading branch information
pkoenig10 authored Jan 9, 2025
1 parent 2f48942 commit 9ea3414
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 83 deletions.
7 changes: 7 additions & 0 deletions changelog/@unreleased/pr-1567.v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type: fix
fix:
description: Remove unnecessary `./gradlew idea` support - it has been deprecated
for many years, please use native Gradle integration by opening with IntelliJ
instead.
links:
- https://github.com/palantir/gradle-conjure/pull/1567
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@ private static void createGenerateTask(
ConjurePlugin.addGeneratedToMainSourceSet(project, generateJava);

project.getTasks().named("compileJava").configure(compileJava -> compileJava.dependsOn(generateJava));
ConjurePlugin.applyDependencyForIdeTasks(project, generateJava);
ConjurePlugin.configureIdeGeneratedSources(
project, generateJava.flatMap(ConjureJavaLocalGeneratorTask::getOutputDirectory));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ public void apply(Project project) {
+ "from remote Conjure definitions.");
task.setGroup(ConjurePlugin.TASK_GROUP);
});
ConjurePlugin.applyDependencyForIdeTasks(project, generateConjure);

setupConjureJava(
project, immutableOptionsSupplier(extension::getJava), conjureIrConfiguration, generateConjure);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.BasePlugin;
import org.gradle.api.plugins.JavaLibraryPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Delete;
import org.gradle.api.tasks.Exec;
Expand Down Expand Up @@ -121,7 +122,6 @@ public void apply(Project project) {
task.setGroup(TASK_GROUP);
});

applyDependencyForIdeTasks(project, compileConjure);
buildDependsOn(project, compileConjure);

setupConjureJavaProjects(
Expand Down Expand Up @@ -228,7 +228,6 @@ private static Project setupDerivedJavaProject(
});
addGeneratedToMainSourceSet(subproj, conjureGeneratorTask);
subproj.getTasks().named("compileJava").configure(t -> t.dependsOn(conjureGeneratorTask));
applyDependencyForIdeTasks(subproj, conjureGeneratorTask);
ConjurePlugin.configureIdeGeneratedSources(
subproj, conjureGeneratorTask.flatMap(ConjureGeneratorTask::getOutputDirectory));
compileConjure.configure(t -> t.dependsOn(conjureGeneratorTask));
Expand Down Expand Up @@ -333,7 +332,6 @@ private static void setupConjureTypescriptProject(
String typescriptProjectName = project.getName() + "-typescript";
if (derivedProjectExists(project, typescriptProjectName)) {
project.project(derivedProjectPath(project, typescriptProjectName), subproj -> {
applyDependencyForIdeTasks(subproj, compileConjure);
File srcDirectory = subproj.file("src");
TaskProvider<ExtractExecutableTask> extractConjureTypeScriptTask =
ExtractConjurePlugin.applyConjureTypeScript(project);
Expand Down Expand Up @@ -453,7 +451,6 @@ private static void setupConjurePythonProject(
String pythonProjectName = project.getName() + "-python";
if (derivedProjectExists(project, pythonProjectName)) {
project.project(derivedProjectPath(project, pythonProjectName), subproj -> {
applyDependencyForIdeTasks(subproj, compileConjure);
File buildDir = new File(project.getBuildDir(), "python");
File distDir = new File(buildDir, "dist");
TaskProvider<ExtractExecutableTask> extractConjurePythonTask =
Expand Down Expand Up @@ -597,41 +594,16 @@ private static Map<String, Project> findGenericDerivedProjects(Project project)
return Collections.emptyMap();
}

// TODO(fwindheuser): Replace 'JavaPluginConvention' with 'JavaPluginExtension' after dropping Gradle 6 support.
@SuppressWarnings("deprecation")
static void addGeneratedToMainSourceSet(Project subproj, TaskProvider<?> conjureGeneratorTask) {
org.gradle.api.plugins.JavaPluginExtension javaPlugin =
subproj.getExtensions().getByType(org.gradle.api.plugins.JavaPluginExtension.class);
JavaPluginExtension javaPlugin = subproj.getExtensions().getByType(JavaPluginExtension.class);
javaPlugin.getSourceSets().getByName("main").getJava().srcDir(conjureGeneratorTask);
}

static void applyDependencyForIdeTasks(Project project, TaskProvider<?> compileConjure) {
project.getPlugins().withType(IdeaPlugin.class, _plugin -> {
// root project does not have the ideaModule task. There is unfortunately no
// safe way to check for existence with the task avoidance APIs
try {
project.getTasks().named("ideaModule").configure(t -> t.dependsOn(compileConjure));
} catch (UnknownTaskException e) {
project.getLogger().debug("Project does not have ideaModule task.", e);
}
});

project.getPlugins().withType(EclipsePlugin.class, _plugin -> {
try {
project.getTasks().named("eclipseClasspath").configure(t -> t.dependsOn(compileConjure));
} catch (UnknownTaskException e) {
// eclipseClasspath is not always registered
}
});
}

static void configureIdeGeneratedSources(Project project, Provider<Directory> generated) {
project.getPlugins().withType(IdeaPlugin.class, plugin -> {
IdeaModule module = plugin.getModel().getModule();

// module.getSourceDirs / getGeneratedSourceDirs could be an immutable set, so defensively copy
module.setSourceDirs(mutableSetWithExtraEntry(
module.getSourceDirs(), generated.get().getAsFile()));
// module.getGeneratedSourceDirs could be an immutable set, so defensively copy
module.setGeneratedSourceDirs(mutableSetWithExtraEntry(
module.getGeneratedSourceDirs(), generated.get().getAsFile()));
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,27 +120,6 @@ class ConjureJavaLocalCodegenPluginIntegrationSpec extends IntegrationSpec {
fileExists('conjure-api/build/generated/sources/conjure-java-local-java/java/main/test/group/com/palantir/conjure/spec/ConjureDefinition.java')
}

def 'sets up idea source sets correctly'() {
buildFile << """
conjure { java { addFlag 'objects' } }
subprojects {
apply plugin: 'idea'
}
""".stripIndent()
addSubproject("conjure-api")

when:
runTasksSuccessfully('idea')

then:
def slurper = new XmlParser()
def module = slurper.parse(file('conjure-api/conjure-api.iml'))
def sourcesFolderUrls = module.component.content.sourceFolder.@url

sourcesFolderUrls.size() == 1
sourcesFolderUrls.contains('file://$MODULE_DIR$/build/generated/sources/conjure-java-local-java/java/main')
}

def 'embeds product dependencies correctly'() {
addSubproject("conjure-api")
buildFile << """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -656,35 +656,6 @@ class ConjurePluginTest extends IntegrationSpec {
'peer' | ''
}

def 'sets up idea source sets correctly'() {
given:
createFile('api/api-jersey/some-extra-source-folder')

file('build.gradle') << '''
subprojects {
apply plugin: 'idea'
idea {
module {
sourceDirs += file('some-extra-source-folder')
}
}
}
'''.stripIndent()

when:
runTasksSuccessfully('idea')

then:
def slurper = new XmlParser()
def module = slurper.parse(file('api/api-jersey/api-jersey.iml'))
def sourcesFolderUrls = module.component.content.sourceFolder.@url

sourcesFolderUrls.size() == 2
sourcesFolderUrls.contains('file://$MODULE_DIR$/some-extra-source-folder')
sourcesFolderUrls.contains('file://$MODULE_DIR$/build/generated/sources/conjure-jersey/java/main')
}

def 'compileTypeScript is run on build for circle node 0'() {
when:
def stdout = runTasksSuccessfully('build', '--dry-run',
Expand Down

0 comments on commit 9ea3414

Please sign in to comment.