Skip to content

Commit

Permalink
Apply official jOOQ gradle plugin when adding the jOOQ feature. [skip…
Browse files Browse the repository at this point in the history
… ci]

closes #2228
  • Loading branch information
wetted committed Dec 18, 2023
1 parent 980481c commit afb0f00
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 52 deletions.
2 changes: 2 additions & 0 deletions gradle/templates.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ gradle-jrebel-plugin = "1.1.10"
gradle-shadow-plugin = "8.1.1"
jib-gradle-plugin = "2.8.0"
jobrunr = "6.3.3"
jooq-gradle-plugin = "3.19.0"
jruby = "9.4.5.0"
json-bind = "2.0.0"
jte-gradle-plugin= "3.0.3"
Expand Down Expand Up @@ -104,6 +105,7 @@ gradle-jrebel-plugin = { module = "gradle.plugin.org.zeroturnaround:gradle-jrebe
gradle-shadow-plugin = { module = "gradle.plugin.com.github.johnrengelman:shadow", version.ref = "gradle-shadow-plugin" }
jib-gradle-plugin = { module = "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin", version.ref = "jib-gradle-plugin" }
jobrunr-micronaut = { module = "org.jobrunr:jobrunr-micronaut-feature", version.ref = "jobrunr" }
jooq-gradle-plugin = { module = "org.jooq.jooq-codegen-gradle:org.jooq.jooq-codegen-gradle.gradle.plugin", version.ref = "jooq-gradle-plugin" }
jruby = { module = "org.jruby:jruby", version.ref = "jruby" }
json-bind = { module = "jakarta.json.bind:jakarta.json.bind-api", version.ref = "json-bind" }
jte-gradle-plugin = { module = "gg.jte:jte-gradle-plugin", version.ref = "jte-gradle-plugin" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,18 @@
*/
package io.micronaut.starter.feature.database;

import io.micronaut.core.annotation.NonNull;
import io.micronaut.starter.application.ApplicationType;
import io.micronaut.starter.application.generator.GeneratorContext;
import io.micronaut.starter.build.dependencies.Dependency;
import io.micronaut.starter.build.gradle.GradlePlugin;
import io.micronaut.starter.feature.Category;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.feature.FeatureContext;
import io.micronaut.starter.feature.MinJdkFeature;
import io.micronaut.starter.feature.database.jdbc.JdbcFeature;

import io.micronaut.starter.options.JdkVersion;
import jakarta.inject.Singleton;

@Singleton
public class Jooq implements Feature, MinJdkFeature {
public class Jooq implements Feature {

private final JdbcFeature jdbcFeature;

Expand Down Expand Up @@ -65,6 +62,12 @@ public void apply(GeneratorContext generatorContext) {
.groupId("io.micronaut.sql")
.artifactId("micronaut-jooq")
.compile());
if (generatorContext.getBuildTool().isGradle()) {
generatorContext.addBuildPlugin(GradlePlugin.builder()
.id("org.jooq.jooq-codegen-gradle")
.lookupArtifactId("org.jooq.jooq-codegen-gradle.gradle.plugin")
.build());
}
}

@Override
Expand All @@ -81,10 +84,4 @@ public String getCategory() {
public String getMicronautDocumentation() {
return "https://micronaut-projects.github.io/micronaut-sql/latest/guide/index.html#jooq";
}

@Override
@NonNull
public JdkVersion minJdk() {
return JdkVersion.JDK_11;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package io.micronaut.starter.feature.database
import io.micronaut.starter.ApplicationContextSpec
import io.micronaut.starter.BuildBuilder
import io.micronaut.starter.application.ApplicationType
import io.micronaut.starter.build.BuildTestUtil
import io.micronaut.starter.build.BuildTestVerifier
import io.micronaut.starter.build.dependencies.Scope
import io.micronaut.starter.fixture.CommandOutputFixture
import io.micronaut.starter.options.BuildTool
import io.micronaut.starter.options.JdkVersion
import io.micronaut.starter.options.Language
import io.micronaut.starter.options.MicronautJdkVersionConfiguration
import io.micronaut.starter.options.Options
Expand All @@ -22,55 +24,24 @@ class JooqSpec extends ApplicationContextSpec implements CommandOutputFixture {
readme.contains("https://micronaut-projects.github.io/micronaut-sql/latest/guide/index.html#jooq")
}

void 'test gradle jooq feature for language=#language'() {
void 'test buildTool=#buildTool jooq feature for language=#language'() {
when:
String template = new BuildBuilder(beanContext, BuildTool.GRADLE)
String template = new BuildBuilder(beanContext, buildTool)
.features(['jooq'])
.language(language)
.jdkVersion(MicronautJdkVersionConfiguration.DEFAULT_OPTION)
.render()
BuildTestVerifier verifier = BuildTestUtil.verifier(buildTool, language, template)

then:
template.contains('implementation("io.micronaut.sql:micronaut-jooq")')
verifier.hasDependency('io.micronaut.sql','micronaut-jooq', Scope.COMPILE)

where:
language << Language.values().toList()
}

void 'test maven jooq feature for language=#language'() {
when:
String template = new BuildBuilder(beanContext, BuildTool.MAVEN)
.features(['jooq'])
.language(language)
.jdkVersion(MicronautJdkVersionConfiguration.DEFAULT_OPTION)
.render()

then:
template.contains("""
<dependency>
<groupId>io.micronaut.sql</groupId>
<artifactId>micronaut-jooq</artifactId>
<scope>compile</scope>
</dependency>
""")

where:
language << Language.values().toList()
}

void "test jooq cannot be applied for #language with Java 8"() {
when:
new BuildBuilder(beanContext, BuildTool.GRADLE)
.features(['jooq'])
.language(language)
.jdkVersion(JdkVersion.JDK_8)
.render()

then:
IllegalArgumentException ex = thrown()
ex.message == "The selected feature jooq requires at latest Java 11"
and:
if (buildTool.isGradle()) {
assert verifier.hasBuildPlugin('org.jooq.jooq-codegen-gradle')
}

where:
language << Language.values().toList()
[buildTool,language] << [BuildTool.values(), Language.values()].combinations()
}
}

0 comments on commit afb0f00

Please sign in to comment.