monosoul / jooq-gradle-plugin Goto Github PK
View Code? Open in Web Editor NEWPlugin for generating jOOQ classes using dockerized databases
Home Page: https://plugins.gradle.org/plugin/dev.monosoul.jooq-docker
License: Apache License 2.0
Plugin for generating jOOQ classes using dockerized databases
Home Page: https://plugins.gradle.org/plugin/dev.monosoul.jooq-docker
License: Apache License 2.0
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
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.
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"
}
}
}
A container for image postgis/postgis:11-2.5
is spun up.
A container for image postgres:14.4-alpine
is spun up.
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?
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.
.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.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.properties
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)
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!
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!
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
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
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.
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"
}
}
}
As a plugin user
In order to be able to specify Flyway and Jooq versions to use the plugin with myself
I want them to be configurable
As a plugin user
In order to be able to change plugin configuration via command-line arguments to Gradle
I want the plugin to be configurable via Gradle properties
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
Thank you for your great work - highly appreciated 🙇
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.