Coder Social home page Coder Social logo

monosoul / jooq-gradle-plugin Goto Github PK

View Code? Open in Web Editor NEW
38.0 3.0 5.0 836 KB

Plugin for generating jOOQ classes using dockerized databases

Home Page: https://plugins.gradle.org/plugin/dev.monosoul.jooq-docker

License: Apache License 2.0

Kotlin 99.90% Shell 0.10%
database docker gradle gradle-kotlin-dsl gradle-plugin jooq jooq-codegen jooq-generator kotlin-dsl

jooq-gradle-plugin's People

Contributors

adrianskrobaczrevolut avatar monosoul avatar renovate[bot] avatar schmist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

jooq-gradle-plugin's Issues

Support multi-database setup

As a plugin user
In order to generate jOOQ classes for multiple databases in a single project
I want the plugin to support per-task database configuration

WithContainer doesnt spin up the correct container for versions >=1.3.5

First of all big big appreciation to you for forking and maintaining this plugin.
We still sticked to the last version of the original plugin until now.
Today I discovered your fork and could migrate easily.

Description

I faced one issue though. We are using WithContainers block with postgis database image for code generation.
This is working fine up to version 1.3.5 but not with versions >= 1.3.5.
We are applying following configuration:

jooq {
    withContainer {
        image {
            name = "postgis/postgis:11-2.5"
        }
    }
}

Expected Behaviour

A container for image postgis/postgis:11-2.5 is spun up.

Actual Behaviour

A container for image postgres:14.4-alpine is spun up.

Exclude Flyway Step

First of all, thank you very much for this plugin. We have been using it extensively and it got us using jOOQ quickly with a seamless DX.

We're using this plugin mainly to generate jOOQ classes for a database that belongs to the application, where the migration scripts live in the source code.

We're now adding another database (we followed the Multi-database setup example of the README.md). However, that database doesn't belong to the application, and is readonly access.

When we run the task, we get the following error:

Found non-empty schema(s) "public" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table.

We tried customising the Flyway properties, but it seems they're being ignored. Here's an example of what we tried:

flywayProperties.put("flyway.baselineVersion", "2") // our migrations only has version 1
flywayProperties.put("baselineVersion", "2")
flywayProperties.put("flyway.enabled", "false") // Unknown configuration property: flyway.enabled
flywayProperties.put("enabled", "false")

Here's how the task looks like:

tasks.register("generateForExternalDatabase", GenerateJooqClassesTask.class) {
    basePackageName.set("com.sample.database.external")
    flywayProperties.put("flyway.baselineVersion", "2")
    flywayProperties.put("flyway.enabled", "false")
    includeFlywayTable.set(false)
    withoutContainer {
        db {
            username = ""
            password = ""
            name = ""
            host = ""
            port = 5432
        }
    }
}

When we run the task with a higher baseline version, or flyway disabled, we still get the same error of non-empty schema. Is it possible to disable Flyway for a single database configuration in a multi-database setup?

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

github-actions
.github/workflows/build-on-pr.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • codecov/codecov-action v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • thollander/actions-comment-pull-request v2
.github/workflows/build-on-push-to-main.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • codecov/codecov-action v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • actions/checkout v4
  • cycjimmy/semantic-release-action v3
.github/workflows/publish-on-release.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • mikepenz/action-junit-report v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/actions v3
  • svenstaro/upload-release-action v2
gradle
gradle.properties
libs.versions.toml
  • org.jooq:jooq-codegen 3.19.8
  • org.flywaydb:flyway-core 10.12.0
  • org.flywaydb:flyway-database-postgresql 10.12.0
  • net.java.dev.jna:jna 5.14.0
  • org.testcontainers:jdbc 1.19.7
  • org.testcontainers:postgresql 1.19.7
  • org.junit:junit-bom 5.10.2
  • io.strikt:strikt-jvm 0.34.1
  • io.mockk:mockk-jvm 1.13.10
  • com.pinterest.ktlint:ktlint-cli 1.2.1
  • com.gradle.publish:plugin-publish-plugin 1.2.1
  • com.github.johnrengelman:shadow 8.1.1
  • pl.droidsonroids.gradle.jacoco:pl.droidsonroids.gradle.jacoco 1.0.12
  • io.github.gradle-nexus:publish-plugin 2.0.0
settings.gradle.kts
build.gradle.kts
artifact-tests/build.gradle.kts
  • ch.qos.logback:logback-classic 1.5.6
buildSrc/settings.gradle.kts
buildSrc/build.gradle.kts
buildSrc/src/main/kotlin/coverage-convention.gradle.kts
buildSrc/src/main/kotlin/kotlin-convention.gradle.kts
buildSrc/src/main/kotlin/linter-convention.gradle.kts
buildSrc/src/main/kotlin/publishing-convention.gradle.kts
buildSrc/src/main/kotlin/shadow-convention.gradle.kts
buildSrc/src/main/kotlin/test-fixtures-convention.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties

  • Check this box to trigger a request for Renovate to run again on this repository

GitLab CI DinD environment not found

Plugin works perfectly locally, but fails to build in GitLab CI pipeline.
I use Testcontainers for integration testing and it works configured according to documentation https://java.testcontainers.org/supported_docker_environment/continuous_integration/gitlab_ci/#example-using-dind-docker-in-docker
I tried to configure plugin DEV_MONOSOUL_JOOQ_TESTCONTAINERS_DOCKER_CLIENT_STRATEGY as per readme but it's still failing with the following error:

> Task :generateJooqClasses FAILED
Could not find a valid Docker environment. Please check configuration. Attempted configurations were:
UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (Could not find unix domain socket). Root cause NoSuchFileException (/var/run/docker.sock)

Appreciation

Hey! I'd like to express my gratitude for this really well-made plugin, among several raw analogs it is definitely the best and very well done, thanks a lot to the developer! Despite the small number of stars I hope that the author did this project for himself among others and is not going to abandon it:) If you need any help - please create issues! and I'm sure there will be some kind enthusiasts among users (including me) to help you out. Thank you!

Configuration cache compatibility

When running with https://docs.gradle.org/current/userguide/configuration_cache.html, this will warn:

org.gradle.api.InvalidUserCodeException: Invocation of 'Task.project' by task ':libs.pbtables:generateJooqClasses' at execution time is unsupported.

The stack trace points to the two locations using project in the GenerateJooqClassesTasks.kt file:

https://github.com/monosoul/jooq-gradle-plugin/blob/main/src/main/kotlin/dev/monosoul/jooq/GenerateJooqClassesTask.kt#L206
https://github.com/monosoul/jooq-gradle-plugin/blob/main/src/main/kotlin/dev/monosoul/jooq/GenerateJooqClassesTask.kt#L123

Guidance for the fix is here: https://docs.gradle.org/7.4.1/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution

Thanks for the nice fork btw!

Plugin does not work out of the box with Flyway 10.x.x

This is my build.gradle.kts:

plugins {
    id("org.springframework.boot") version "3.2.3"
    id("io.spring.dependency-management") version "1.1.4"
    kotlin("jvm") version "1.9.23"
    kotlin("plugin.spring") version "1.9.23"
    id("dev.monosoul.jooq-docker") version "6.0.15"
    id("org.flywaydb.flyway") version "10.9.1"
    id("org.jmailen.kotlinter") version "4.1.1"
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-jooq")
    implementation("org.flywaydb:flyway-core:10.9.0")

    jooqCodegen("org.postgresql:postgresql:42.7.2")
    jooqCodegen("org.flywaydb:flyway-core:10.9.0")
    implementation("org.jooq:jooq:${RecommendedVersions.JOOQ_VERSION}")
}

Full Exception:

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':generateJooqClasses'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: org.gradle.internal.UncheckedException: java.lang.reflect.InvocationTargetException
        at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68)
        at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:128)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
        at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:236)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204)
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187)
        at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165)
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181)
        at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71)
        at org.gradle.internal.Either$Right.fold(Either.java:175)
        at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:102)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56)
        at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
        at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
        at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at dev.monosoul.jooq.migration.ReflectiveMigrationRunner$ReflectiveFlywayConfiguration.dataSource(ReflectiveMigrationRunner.kt:57)
        at dev.monosoul.jooq.migration.ReflectiveMigrationRunner.migrateDb(ReflectiveMigrationRunner.kt:23)
        at dev.monosoul.jooq.migration.UniversalMigrationRunner.migrateDb(UniversalMigrationRunner.kt:54)
        at dev.monosoul.jooq.GenerateJooqClassesTask$generateClasses$1.invoke(GenerateJooqClassesTask.kt:241)
        at dev.monosoul.jooq.GenerateJooqClassesTask$generateClasses$1.invoke(GenerateJooqClassesTask.kt:240)
        at dev.monosoul.jooq.settings.JooqDockerPluginSettings$WithContainer.runWithDatabaseCredentials$jooq_gradle_plugin(JooqDockerPluginSettings.kt:42)
        at dev.monosoul.jooq.GenerateJooqClassesTask.generateClasses(GenerateJooqClassesTask.kt:240)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
        ... 112 more
Caused by: org.flywaydb.core.api.FlywayException: No database found to handle jdbc:postgresql://localhost:55246/postgres
        at org.flywaydb.core.internal.database.DatabaseTypeRegister.getDatabaseTypeForUrl(DatabaseTypeRegister.java:54)
        at org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:109)
        at org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:89)
        at org.flywaydb.core.api.configuration.ClassicConfiguration.setDataSource(ClassicConfiguration.java:1073)
        at org.flywaydb.core.api.configuration.FluentConfiguration.dataSource(FluentConfiguration.java:601)
        ... 126 more

Use testcontainers instead of docker-java

As a plugin maintainer
In order to have less maintenance effort
I want the plugin to spin up the DB containers using testcontainers instead of docker-java directly

Allow overriding database host when using `withContainer` (Docker-in-Docker)

When using the plugin with a container (jooq.withContainer), it currently doesn't allow overriding the database host used to build the JDBC URL.

Some CI setups utilizing Docker-in-Docker (DinD) require overriding the hostname and use something other than localhost due to the fact that the Docker daemon is running outside of the actual container.

In our specific case, we're using GitLab CI/CD and the CI runners are Docker containers themselves with access to the Docker daemon running on the host machines.

Overriding the database host depending on where the build is running would enable us to use the same build logic (except for the different host name) locally and on the CI runners.

SAXParseException warning for versions >= 3.0.5

Description

When running the generateJooqClasses command since version 3.0.5 we see the following warning. Code generation still succeeds though.

> Task :generateJooqClasses org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 23; cvc-complex-type.2.4.d: Ungültiger Content wurde beginnend mit Element 'matchers' gefunden. An dieser Stelle wird kein untergeordnetes Element erwartet. cvc-complex-type.2.4.d: Ungültiger Content wurde beginnend mit Element 'matchers' gefunden. An dieser Stelle wird kein untergeordnetes Element erwartet.

Appears with config reduced to only:

    jooq {
        withContainer {
            image {
                name = "postgis/postgis:11-2.5"
            }
        }
    }

gradle cache misses due to generatorConfig marked as @Input

would it be possible to remove the @Input annotation here. it is actually not really an input field since it's value is derived. it explicitly states that

Avoid changing manually, use [usingJavaConfig] or [usingXmlConfig] instead.

so maybe not even expose it (private).

my assumption is that the use of the lambda expression is causing this glitch
Screenshot 2023-07-12 at 19 12 59

Thank you for your great work - highly appreciated 🙇

Support XML jooq codegen configuration

As a plugin user
In order to make jooq codegen configuration local to the migrations
I want the plugin to support XML jooq codegen configuration, so that I can extract configuration from Gradle's buildscripts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.