Skip to content

Commit 716b7dc

Browse files
authored
Remove possible eager task creation (#6442)
* Remove possible eager task creation * Unbreak non-android
1 parent 37f98d9 commit 716b7dc

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo/gradle/internal/DefaultApolloExtension.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,8 @@ abstract class DefaultApolloExtension(
633633
val directoryConnection = DefaultDirectoryConnection(
634634
project = project,
635635
task = sourcesBaseTaskProvider,
636-
outputDir = sourcesBaseTaskProvider.flatMap { (it as ApolloGenerateSourcesBaseTask).outputDir }
636+
outputDir = sourcesBaseTaskProvider.flatMap { (it as ApolloGenerateSourcesBaseTask).outputDir },
637+
hardCodedOutputDir = BuildDirLayout.outputDir(project, service)
637638
)
638639

639640
if (project.hasKotlinPlugin()) {

libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo/gradle/internal/DefaultDirectoryConnection.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ import org.gradle.api.tasks.TaskProvider
1010
internal class DefaultDirectoryConnection(
1111
private val project: Project,
1212
override val task: TaskProvider<out Task>,
13-
override val outputDir: Provider<Directory>
13+
override val outputDir: Provider<Directory>,
14+
/**
15+
* This is a workaround so that calling outputDir.get() in registerJavaGeneratingTask
16+
* doesn't eagerly create the tasks.
17+
* This is OK to do on Android because the taskProvider is also passed to setup task
18+
* dependencies.
19+
*/
20+
private val hardCodedOutputDir: Provider<Directory>
1421
): Service.DirectoryConnection {
1522
override fun connectToKotlinSourceSet(name: String) {
1623
project.kotlinProjectExtensionOrThrow.sourceSets.getByName(name).kotlin.srcDir(outputDir)
@@ -25,14 +32,14 @@ internal class DefaultDirectoryConnection(
2532
}
2633

2734
override fun connectToAndroidVariant(variant: Any) {
28-
connectToAndroidVariant(variant, outputDir, task)
35+
connectToAndroidVariant(variant, hardCodedOutputDir, task)
2936
}
3037

3138
override fun connectToAndroidSourceSet(name: String) {
32-
connectToAndroidSourceSet(project, name, outputDir, task)
39+
connectToAndroidSourceSet(project, name, hardCodedOutputDir, task)
3340
}
3441

3542
override fun connectToAllAndroidVariants() {
36-
connectToAllAndroidVariants(project, outputDir, task)
43+
connectToAllAndroidVariants(project, hardCodedOutputDir, task)
3744
}
3845
}

0 commit comments

Comments
 (0)