@@ -9,6 +9,7 @@ import org.gradle.api.file.ConfigurableFileCollection
9
9
import org.gradle.api.file.Directory
10
10
import org.gradle.api.file.DirectoryProperty
11
11
import org.gradle.api.file.DuplicatesStrategy
12
+ import org.gradle.api.internal.file.FileOperations
12
13
import org.gradle.api.model.ObjectFactory
13
14
import org.gradle.api.provider.Provider
14
15
import org.gradle.api.tasks.Internal
@@ -92,6 +93,8 @@ class RoomSchemaLocationWorkaround implements Workaround {
92
93
def taskSpecificSchemaDir = project. objects. directoryProperty()
93
94
taskSpecificSchemaDir. set(getTaskSpecificSchemaDir(task))
94
95
96
+ def fileOperations = project. fileOperations
97
+
95
98
// Add a command line argument provider to the task-specific list of providers
96
99
task. options. compilerArgumentProviders. add(
97
100
new JavaCompilerRoomSchemaLocationArgumentProvider (roomExtension. schemaLocationDir, taskSpecificSchemaDir)
@@ -102,7 +105,7 @@ class RoomSchemaLocationWorkaround implements Workaround {
102
105
103
106
// Seed the task-specific generated schema dir with the existing schemas
104
107
task. doFirst {
105
- copyExistingSchemasToTaskSpecificTmpDir(task , roomExtension. schemaLocationDir, taskSpecificSchemaDir)
108
+ copyExistingSchemasToTaskSpecificTmpDir(fileOperations , roomExtension. schemaLocationDir, taskSpecificSchemaDir)
106
109
}
107
110
108
111
task. finalizedBy { roomExtension. schemaLocationDir. isPresent() ? mergeTask : null }
@@ -133,7 +136,7 @@ class RoomSchemaLocationWorkaround implements Workaround {
133
136
def configureKaptTask = { Task task ->
134
137
task. doFirst onlyIfAnnotationProcessorConfiguredForKapt(task) { KaptRoomSchemaLocationArgumentProvider provider ->
135
138
// Populate the variant-specific schemas dir with the existing schemas
136
- copyExistingSchemasToTaskSpecificTmpDirForKapt(task , roomExtension. schemaLocationDir, provider)
139
+ copyExistingSchemasToTaskSpecificTmpDirForKapt(project . fileOperations , roomExtension. schemaLocationDir, provider)
137
140
}
138
141
139
142
task. doLast onlyIfAnnotationProcessorConfiguredForKapt(task) { KaptRoomSchemaLocationArgumentProvider provider ->
@@ -204,24 +207,25 @@ class RoomSchemaLocationWorkaround implements Workaround {
204
207
return new File (schemaBaseDir, variantName)
205
208
}
206
209
207
- private static void copyExistingSchemasToTaskSpecificTmpDir (Task task , Provider<Directory > existingSchemaDir , Provider<Directory > taskSpecificTmpDir ) {
210
+ private static void copyExistingSchemasToTaskSpecificTmpDir (FileOperations fileOperations , Provider<Directory > existingSchemaDir , Provider<Directory > taskSpecificTmpDir ) {
208
211
// populate the task-specific tmp dir with any existing (non-generated) schemas
209
212
// this allows other annotation processors that might operate on these schemas
210
213
// to find them via the schema location argument
211
214
if (existingSchemaDir. isPresent()) {
212
- task. project. sync {
213
- from existingSchemaDir
214
- into taskSpecificTmpDir
215
+
216
+ fileOperations. sync {
217
+ it. from(existingSchemaDir)
218
+ it. into(taskSpecificTmpDir)
215
219
}
216
220
}
217
221
}
218
222
219
- private static void copyExistingSchemasToTaskSpecificTmpDirForKapt (Task task , Provider<Directory > existingSchemaDir , KaptRoomSchemaLocationArgumentProvider provider ) {
223
+ private static void copyExistingSchemasToTaskSpecificTmpDirForKapt (FileOperations fileOperations , Provider<Directory > existingSchemaDir , KaptRoomSchemaLocationArgumentProvider provider ) {
220
224
// Derive the variant directory from the command line provider it is configured with
221
225
def temporaryVariantSpecificSchemaDir = provider. temporarySchemaLocationDir
222
226
223
227
// Populate the variant-specific temporary schema dir with the existing schemas
224
- copyExistingSchemasToTaskSpecificTmpDir(task , existingSchemaDir, temporaryVariantSpecificSchemaDir)
228
+ copyExistingSchemasToTaskSpecificTmpDir(fileOperations , existingSchemaDir, temporaryVariantSpecificSchemaDir)
225
229
}
226
230
227
231
private static void copyGeneratedSchemasToOutputDirForKapt (Task task , KaptRoomSchemaLocationArgumentProvider provider ) {
@@ -362,18 +366,22 @@ class RoomSchemaLocationWorkaround implements Workaround {
362
366
* We don't want to create task dependencies on the compile/kapt tasks because we don't want to force execution
363
367
* of those tasks if only a single variant is being assembled.
364
368
*/
365
- static class RoomSchemaLocationMergeTask extends DefaultTask {
369
+ static abstract class RoomSchemaLocationMergeTask extends DefaultTask {
370
+
371
+ // Using older internal API to maintain compatibility with Gradle 5.x
372
+ @Inject abstract FileOperations getFileOperations ()
373
+
366
374
@Internal
367
375
MergeAssociations roomSchemaMergeLocations
368
376
369
377
@TaskAction
370
378
void mergeSourcesToDestinations () {
371
379
roomSchemaMergeLocations. mergeAssociations. each { destination , source ->
372
380
println " Merging schemas to ${ destination.get().asFile} "
373
- project . copy {
374
- duplicatesStrategy( DuplicatesStrategy . INCLUDE )
375
- into(destination)
376
- from(source)
381
+ fileOperations . copy {
382
+ it . duplicatesStrategy = DuplicatesStrategy . INCLUDE
383
+ it . into(destination)
384
+ it . from(source)
377
385
}
378
386
}
379
387
}
0 commit comments