override fun apply()

in graphql-dgs-codegen-gradle/src/main/kotlin/com/netflix/graphql/dgs/codegen/gradle/CodegenPlugin.kt [36:73]


    override fun apply(project: Project) {
        val codegenExtension = project.extensions.create("codegen", CodegenPluginExtension::class.java)

        project.plugins.apply(JavaPlugin::class.java)

        val generateJavaTaskProvider = project.tasks.register("generateJava", GenerateJavaTask::class.java)
        generateJavaTaskProvider.configure { it.group = GRADLE_GROUP }

        val javaExtension = project.extensions.getByType(JavaPluginExtension::class.java)

        val sourceSets =
            if (GradleVersion.current() >=
                GradleVersion.version("7.1")
            ) {
                javaExtension.sourceSets
            } else {
                throw RuntimeException("Gradle versions < 7.1 are no longer supported by DGS Codegen. Please upgrade your Gradle version.")
            }
        val mainSourceSet = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME)
        val outputDir = generateJavaTaskProvider.map(GenerateJavaTask::getOutputDir)
        mainSourceSet.java.srcDirs(project.files(outputDir).builtBy(generateJavaTaskProvider))

        project.configurations.create("dgsCodegen")
        project.configurations.findByName("dgsCodegen")?.isCanBeResolved = true

        addDependencyLock(project, codegenExtension)

        project.afterEvaluate { p ->
            if (codegenExtension.clientCoreConventionsEnabled.getOrElse(true)) {
                logger.info("Applying CodegenPlugin Client Utils conventions.")
                ClientUtilsConventions.apply(
                    p,
                    Optional.ofNullable(codegenExtension.clientCoreVersion.orNull),
                    Optional.ofNullable(codegenExtension.clientCoreScope.orNull),
                )
            }
        }
    }