@@ -72,17 +72,20 @@ class VssProcessorPlugin : Plugin<Project> {
72
72
// The extension variables are only available after the project has been evaluated
73
73
project.afterEvaluate {
74
74
val modelGenerator = VssModelGenerator (project.projectDir, logger)
75
+
75
76
val sourceSetBaseDir = modelGenerator.sourceSetBaseDir
77
+ val sourceSetBaseDirProperty = project.objects.directoryProperty()
78
+ sourceSetBaseDirProperty.set(sourceSetBaseDir)
76
79
77
- addGeneratedPathToSourceSets(project, sourceSetBaseDir )
80
+ addGeneratedPathToSourceSets(project, sourceSetBaseDirProperty )
78
81
79
82
val generateVssModelsTask = project.tasks.register<GenerateVssModelsTask >(GENERATE_TASK_NAME ) {
80
83
vssModelGenerator = modelGenerator
81
84
82
- val vssDir = readVssDir(vssProcessorExtension)
83
- this .vssDir.set(vssDir )
85
+ val vssDirProperty = readVssDir(vssProcessorExtension)
86
+ this .vssDir.set(vssDirProperty )
84
87
85
- generatedOutputDir.set(sourceSetBaseDir )
88
+ generatedOutputDir.set(sourceSetBaseDirProperty )
86
89
}
87
90
88
91
tasks.withType(KotlinCompile ::class .java).configureEach {
@@ -97,16 +100,19 @@ class VssProcessorPlugin : Plugin<Project> {
97
100
}
98
101
}
99
102
100
- private fun Project.readVssDir (vssProcessorExtension : VssProcessorPluginExtension ): File {
103
+ private fun Project.readVssDir (vssProcessorExtension : VssProcessorPluginExtension ): DirectoryProperty {
101
104
val defaultVssPath = File (rootDir, VSS_FOLDER_NAME )
102
105
val vssPath = vssProcessorExtension.searchPath.get().ifEmpty { defaultVssPath.absolutePath }
103
106
val vssDir = File (vssPath)
104
- return vssDir
107
+
108
+ val vssDirProperty = project.objects.directoryProperty()
109
+ vssDirProperty.set(vssDir)
110
+ return vssDirProperty
105
111
}
106
112
107
113
private fun addGeneratedPathToSourceSets (
108
114
project : Project ,
109
- sourceSetBaseDir : File ,
115
+ sourceSetBaseDirProperty : DirectoryProperty ,
110
116
) {
111
117
val extensions = project.extensions
112
118
val pluginManager = project.pluginManager
@@ -118,15 +124,15 @@ class VssProcessorPlugin : Plugin<Project> {
118
124
if (isAndroidApplication) {
119
125
val androidExtension = extensions.getByType(AppExtension ::class .java)
120
126
val mainSourceSet = androidExtension.sourceSets.named(SOURCESET_MAIN_NAME ).get()
121
- mainSourceSet.java.srcDirs(sourceSetBaseDir )
127
+ mainSourceSet.java.srcDirs(sourceSetBaseDirProperty )
122
128
} else if (isAndroidLibrary) {
123
129
val androidExtension = extensions.getByType(LibraryExtension ::class .java)
124
130
val mainSourceSet = androidExtension.sourceSets.named(SOURCESET_MAIN_NAME ).get()
125
- mainSourceSet.java.srcDirs(sourceSetBaseDir )
131
+ mainSourceSet.java.srcDirs(sourceSetBaseDirProperty )
126
132
} else if (isJavaProject) {
127
133
val sourceSets = extensions.getByType(SourceSetContainer ::class .java)
128
134
val mainSourceSet = sourceSets.named(SOURCESET_MAIN_NAME ).get()
129
- mainSourceSet.java.srcDirs(sourceSetBaseDir )
135
+ mainSourceSet.java.srcDirs(sourceSetBaseDirProperty )
130
136
} else {
131
137
throw GradleException (" Project does not contain any supported plugin" )
132
138
}
0 commit comments