diff --git a/README.md b/README.md index 991f35b..a97c25c 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ and [Testcontainers](https://testcontainers.com) dbName = "my_database" liquibaseChangelog = file("/path/to/file.yml") excludeTables = "(table1|table2)" + outputDir = project.layout.buildDirectory.dir("schemaspy/sakila").get() } ``` 3. Execute gradle `generateSchemaspyDocs` task: diff --git a/example/build.gradle.kts b/example/build.gradle.kts index 90ffe8f..00464a9 100644 --- a/example/build.gradle.kts +++ b/example/build.gradle.kts @@ -6,4 +6,5 @@ plugins { schemaspyConfig { dbName = "sakila" liquibaseChangelog = file("${project.projectDir}/src/main/resources/liquibase/changelog.yml") + outputDir = project.layout.buildDirectory.dir("schemaspy/sakila").get() } diff --git a/plugin-build/gradle.properties b/plugin-build/gradle.properties index 939a4a2..5584c40 100644 --- a/plugin-build/gradle.properties +++ b/plugin-build/gradle.properties @@ -1,5 +1,5 @@ ID=io.github.denis-markushin.schemaspy-plugin -VERSION=0.2.2 +VERSION=0.3.0 GROUP=io.github.denis-markushin.gradle.schemaspy DISPLAY_NAME=SchemaSpy Gradle plugin DESCRIPTION=The plugin to generate docs using Testcontainers and SchemaSpy diff --git a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyExtension.kt b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyExtension.kt index 03a4f0d..b6dcbb4 100644 --- a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyExtension.kt +++ b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyExtension.kt @@ -1,6 +1,7 @@ package io.github.denismarkushin.gradle.schemaspy import org.gradle.api.Project +import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import javax.inject.Inject @@ -46,4 +47,9 @@ abstract class SchemaspyExtension * Should unzip output or not. Default value is: true */ val unzipOutput: Property = objects.property(Boolean::class.java).convention(true) + + /** + * Target directory for output + */ + val outputDir: DirectoryProperty = objects.directoryProperty() } diff --git a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyPlugin.kt b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyPlugin.kt index 85fc03e..893ede2 100644 --- a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyPlugin.kt +++ b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyPlugin.kt @@ -9,6 +9,7 @@ private const val TASK_NAME = "generateSchemaspyDocs" abstract class SchemaspyPlugin : Plugin { override fun apply(project: Project) { val extension = project.extensions.create(EXTENSION_NAME, SchemaspyExtension::class.java, project) + val defaultSchemaspyOutputDir = project.layout.buildDirectory.get().dir("schemaspy") // Add a task that uses configuration from the extension object project.tasks.register(TASK_NAME, SchemaspyTask::class.java) { @@ -17,10 +18,8 @@ abstract class SchemaspyPlugin : Plugin { it.excludeTables.set(extension.excludeTables) it.postgresDockerImage.set(extension.postgresDockerImage) it.schemaspyDockerImage.set(extension.schemaspyDockerImage) - it.outputDir.set(project.schemaSpyOutputDir().dir(it.dbName)) + it.outputDir.set(extension.outputDir.getOrElse(defaultSchemaspyOutputDir)) it.unzipOutput.set(extension.unzipOutput) } } - - private fun Project.schemaSpyOutputDir() = layout.buildDirectory.get().dir("schemaspy") } diff --git a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyTask.kt b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyTask.kt index 60860a3..2998633 100644 --- a/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyTask.kt +++ b/plugin-build/plugin/src/main/java/io/github/denismarkushin/gradle/schemaspy/SchemaspyTask.kt @@ -54,6 +54,7 @@ abstract class SchemaspyTask : DefaultTask() { abstract val unzipOutput: Property @get:OutputDirectory + @get:Optional abstract val outputDir: DirectoryProperty private val postgresImage by lazy {