gradle.build
unknown
groovy
3 years ago
5.9 kB
10
Indexable
import nu.studer.gradle.jooq.JooqEdition import org.testcontainers.containers.PostgreSQLContainer import org.testcontainers.utility.ResourceReaper buildscript { repositories { mavenLocal() mavenCentral() } dependencies { // testcontainers classpath "org.testcontainers:postgresql:$testContainersVersion" } } /* * Plugins */ plugins { id 'java' id 'org.springframework.boot' version "$springBootPluginVersion" id 'io.spring.dependency-management' version "$springDependencyManagerPluginVersion" id "org.jetbrains.kotlin.jvm" version "$kotlinJvmPluginVersion" id "org.jetbrains.kotlin.plugin.spring" version "$kotlinJvmPluginVersion" id "com.google.protobuf" version "$protobufPluginVersion" id 'nu.studer.jooq' version "$jooqPluginVersion" id 'maven-publish' id 'jacoco' id "org.flywaydb.flyway" version "$flywayPluginVersion" id "org.jetbrains.kotlin.kapt" version "$kaptPluginVersion" id "com.dorongold.task-tree" version "2.1.0" } repositories { mavenLocal() mavenCentral() } dependencies { // spring implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-jooq' // postgres runtimeOnly 'org.postgresql:postgresql' // jooq jooqGenerator "org.postgresql:postgresql:$postgresVersion" // flyway implementation 'org.flywaydb:flyway-core' // our libs if (System.env.GITLAB_CI) { implementation fileTree(dir: '.', include: ['*.jar']) } else { implementation project(':lib-commons') implementation project(':lib-project-constructor') implementation project(':lib-module-library') implementation project(':lib-config-constructor') implementation project(':lib-data-accessor') } // tests testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" testImplementation "org.testcontainers:testcontainers:$testContainersVersion" testImplementation "org.testcontainers:postgresql:$testContainersVersion" } /** * Database */ tasks.register("tcStart") { var db = new PostgreSQLContainer("postgres:14-alpine") .withUsername("postgres") .withDatabaseName("postgres") .withPassword("postgres") db.start() println("Starting container: ${db.containerId}") project.ext.db_url = db.jdbcUrl project.ext.container_id = db.containerId project.ext.image_name = db.dockerImageName project.ext['flyway.url'] = db.jdbcUrl project.ext['jooq.configuration.jdbc.url'] = db.jdbcUrl project.ext['jooq.configurations.main.jdbc.url'] = db.jdbcUrl } tasks.register("tcStop") { var containerId = project.ext.container_id var imageName = project.ext.image_name println("Stopping container: $containerId") ResourceReaper .instance() .stopAndRemoveContainer(containerId, imageName); } flyway { // url = "jdbc:postgresql://$dbHost:$dbPort/$dbName?currentSchema=public&ApplicationName=$dbApplication" user = 'postgres' password = 'postgres' schemas = ['public'] locations = ['classpath:db/migration'] baselineOnMigrate = true } /* * jOOQ configuration */ jooq { version = "$jookVersion" // default (can be omitted) edition = JooqEdition.OSS // default (can be omitted) configurations { main { // name of the jOOQ configuration generateSchemaSourceOnCompilation = true // default (can be omitted) generationTool { logging = org.jooq.meta.jaxb.Logging.DEBUG jdbc { driver = 'org.postgresql.Driver' // set url from test container url = project.ext.db_url user = 'postgres' password = 'postgres' } generator { name = 'org.jooq.codegen.DefaultGenerator' database { name = 'org.jooq.meta.postgres.PostgresDatabase' inputSchema = 'public' forcedTypes { forcedType { userType = 'com.fasterxml.jackson.databind.JsonNode' includeTypes = '.*' includeExpression = '.*JSON.*' binding = 'dataflow.binding.PostgresJSONBBinding' } } } generate { pojosAsKotlinDataClasses = true deprecated = false records = true pojos = true immutablePojos = false fluentSetters = true daos = true } target { packageName = "dataflow.$dataflowPackageName" directory = 'build/generated-src/jooq/main' // default (can be omitted) } strategy.name = 'org.jooq.codegen.DefaultGeneratorStrategy' } } } } } flywayMigrate.dependsOn tcStart generateJooq.dependsOn flywayMigrate //test.dependsOn tcStop
Editor is loading...