Skip to content

Commit 9104261

Browse files
authored
Merge pull request #229 from jsonschema2dataclass/agp7
Return AGP 7 support in the same way as AGP 3
2 parents e7b2c93 + 3762cbc commit 9104261

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

src/main/kotlin/org/jsonschema2dataclass/js2p/Js2pPlugin.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import org.gradle.api.Plugin
55
import org.gradle.api.Project
66
import org.gradle.api.ProjectConfigurationException
77
import org.gradle.api.Task
8-
import org.gradle.api.file.Directory
8+
import org.gradle.api.file.DirectoryProperty
99
import org.gradle.api.file.FileCollection
1010
import org.gradle.api.plugins.JavaLibraryPlugin
1111
import org.gradle.api.plugins.JavaPlugin
12-
import org.gradle.api.provider.Provider
1312
import org.gradle.api.tasks.TaskProvider
1413
import org.gradle.util.GradleVersion
1514
import org.jsonschema2dataclass.js2p.support.applyInternalAndroid
@@ -34,6 +33,7 @@ class Js2pPlugin : Plugin<Project> {
3433
project.extensions.create("jsonSchema2Pojo", Js2pExtension::class.java)
3534
val pluginExtension = project.extensions.getByType(Js2pExtension::class.java)
3635
pluginExtension.targetDirectoryPrefix.convention(project.layout.buildDirectory.dir(TARGET_FOLDER_BASE))
36+
3737
if (javaPlugins.any { project.plugins.hasPlugin(it) }) {
3838
project.afterEvaluate {
3939
applyInternalJava(pluginExtension, project)
@@ -78,7 +78,7 @@ internal fun createJS2DTask(
7878
targetDirectorySuffix: String,
7979
postConfigure: (
8080
task: TaskProvider<out Js2pGenerationTask>,
81-
Provider<Directory>
81+
DirectoryProperty
8282
) -> Unit,
8383
): TaskProvider<Task> {
8484

@@ -88,7 +88,8 @@ internal fun createJS2DTask(
8888
}
8989

9090
extension.executions.forEachIndexed { configurationId, configuration ->
91-
val targetPath = extension.targetDirectoryPrefix.dir("${configuration.name}$targetDirectorySuffix")
91+
val targetPath = project.objects.directoryProperty()
92+
targetPath.set(extension.targetDirectoryPrefix.dir("${configuration.name}$targetDirectorySuffix"))
9293
val taskProvider = createJS2DTaskExecution(
9394
project,
9495
configurationId,
@@ -113,7 +114,7 @@ private fun createJS2DTaskExecution(
113114
taskNameSuffix: String,
114115
configurationName: String,
115116
source: FileCollection,
116-
targetPath: Provider<Directory>,
117+
targetPath: DirectoryProperty,
117118
): TaskProvider<out Js2pGenerationTask> {
118119
val taskName = "${TASK_NAME}${configurationId}$taskNameSuffix"
119120
return project.tasks.register(taskName, Js2pGenerationTask::class.java) { task ->

src/main/kotlin/org/jsonschema2dataclass/js2p/support/AndroidSupport.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ internal fun applyInternalAndroid(extension: Js2pExtension, project: Project) {
1919
getAndroidJsonPath(project),
2020
JavaVersion.current() >= JavaVersion.VERSION_1_9
2121
)
22-
22+
val experimental = project.properties["org.jsonschema2dataclass.agp7.experimental"]?.toString().toBoolean()
2323
when (com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.split(".")[0].toInt()) {
2424
3, 4 -> applyInternalAndroidAgp3(extension, project)
25-
7 -> applyInternalAndroidAgp7(extension, project)
25+
7 -> if (experimental) {
26+
applyInternalAndroidAgp7(extension, project)
27+
} else {
28+
applyInternalAndroidAgp3(extension, project)
29+
}
2630
else -> throw ProjectConfigurationException("$TASK_NAME: Plugin supports AGP 3.x, 4.x or 7.x", listOf())
2731
}
2832
}

src/main/kotlin/org/jsonschema2dataclass/js2p/support/JavaSupport.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ internal fun applyInternalJava(extension: Js2pExtension, project: Project) {
3636
@Suppress("UnstableApiUsage")
3737
project.tasks.withType(ProcessResources::class.java) {
3838
generationTaskProvider.configure { generationTask ->
39-
4039
generationTask.dependsOn(it)
4140
}
4241
}

src/main/kotlin/org/jsonschema2dataclass/js2p/support/android/Agp7.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.android.build.api.artifact.Artifact
44
import com.android.build.api.artifact.ArtifactKind
55
import com.android.build.api.variant.AndroidComponentsExtension
66
import com.android.build.api.variant.Variant
7+
import com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask
8+
import com.android.build.gradle.tasks.JavaPreCompileTask
79
import org.gradle.api.Project
810
import org.gradle.api.file.Directory
911
import org.gradle.api.file.FileSystemLocation
@@ -20,15 +22,24 @@ internal fun applyInternalAndroidAgp7(extension: Js2pExtension, project: Project
2022

2123
private fun createTasksForVariant7(project: Project, extension: Js2pExtension, variant: Variant) {
2224
val capitalizedName = variant.name.capitalization()
23-
KotlinVersion.CURRENT
2425
createJS2DTask(
2526
project,
2627
extension,
2728
"For$capitalizedName",
2829
"${variant.flavorName}/${variant.buildType}/"
29-
) { genTask, _ ->
30-
variant.artifacts.use(genTask).wiredWith { it.targetDirectory }
30+
) { genTask, targetDirectory ->
31+
variant.artifacts.use(genTask).wiredWith { targetDirectory }
3132
.toCreate(ArtifactType7.SINGLE_DIRECTORY_ARTIFACT)
33+
34+
project.tasks.withType(JavaPreCompileTask::class.java) {
35+
it.dependsOn(genTask)
36+
}
37+
38+
project.tasks.withType(LinkApplicationAndroidResourcesTask::class.java) {
39+
genTask.configure { task ->
40+
task.dependsOn(it)
41+
}
42+
}
3243
}
3344
}
3445

0 commit comments

Comments
 (0)