Skip to content

Commit

Permalink
Get rid of project after evaluate in favour of lazy config for source…
Browse files Browse the repository at this point in the history
…s set
  • Loading branch information
adrianskrobaczrevolut committed Oct 28, 2019
1 parent 88eb21a commit b12e666
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 11 deletions.
8 changes: 5 additions & 3 deletions src/main/kotlin/com/revolut/jooq/GenerateJooqClassesTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,11 @@ open class GenerateJooqClassesTask : DefaultTask() {


init {
project.afterEvaluate {
val sourceSets = project.properties["sourceSets"] as SourceSetContainer
sourceSets.getByName("main").java.srcDir(outputDirectory.get())
val sourceSets = project.properties["sourceSets"] as SourceSetContainer
sourceSets.named("main") {
java {
srcDir(outputDirectory)
}
}
}

Expand Down
10 changes: 2 additions & 8 deletions src/main/kotlin/com/revolut/jooq/JooqDockerPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,15 @@ package com.revolut.jooq
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.compile.JavaCompile

open class JooqDockerPlugin : Plugin<Project> {

override fun apply(project: Project) {
project.pluginManager.apply(JavaPlugin::class.java)
project.extensions.create("jooq", JooqExtension::class.java)
project.configurations.create("jdbc")
project.tasks.apply {
val generateJooqClasses = create("generateJooqClasses", GenerateJooqClassesTask::class.java) {
group = "jooq"
}
withType(JavaCompile::class.java) {
dependsOn(generateJooqClasses)
}
project.tasks.create("generateJooqClasses", GenerateJooqClassesTask::class.java) {
group = "jooq"
}
}
}
39 changes: 39 additions & 0 deletions src/test/groovy/JooqDockerPluginSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,45 @@ class JooqDockerPluginSpec extends Specification {
Files.notExists(generatedFlywaySchemaClass)
}

def "outputDirectory task property is respected"() {
given:
prepareBuildGradleFile(projectDir,
"""
plugins {
id("com.revolut.jooq-docker")
}
repositories {
jcenter()
}
tasks {
generateJooqClasses {
outputDirectory.set(project.layout.buildDirectory.dir("gen"))
}
}
dependencies {
"jdbc"("org.postgresql:postgresql:42.2.5")
}
""")
copyResource("/V01__init.sql", new File(projectDir, "src/main/resources/db/migration/V01__init.sql"))

when:
def result = GradleRunner.create()
.withProjectDir(projectDir)
.withPluginClasspath()
.withArguments("generateJooqClasses")
.build()

then:
result.task(":generateJooqClasses").outcome == SUCCESS
def generatedFooClass = Paths.get(projectDir.getPath(), "build/gen/org/jooq/generated/tables/Foo.java")
def generatedFlywayClass = Paths.get(projectDir.getPath(), "build/gen/org/jooq/generated/tables/FlywaySchemaHistory.java")
Files.exists(generatedFooClass)
Files.exists(generatedFlywayClass)
}

private static void prepareBuildGradleFile(File dir, String script) {
def buildGradleFile = new File(dir, "build.gradle.kts")
buildGradleFile.write(script)
Expand Down

0 comments on commit b12e666

Please sign in to comment.