From 78513e547049caf2f35046352a1564b43a73c448 Mon Sep 17 00:00:00 2001 From: Toshihiro Nakamura Date: Sat, 10 May 2025 22:25:58 +0900 Subject: [PATCH 1/4] Switch Java version in .sdkmanrc to 17.0.14-tem --- .sdkmanrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.sdkmanrc b/.sdkmanrc index 9402662..9476209 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -1,4 +1,4 @@ # Enable auto-env through the sdkman_auto_env config # Add key=value pairs of SDKs to use below -java=21-zulu +java=17.0.14-tem From e117263c804720accc0eea744775241a27340685 Mon Sep 17 00:00:00 2001 From: Toshihiro Nakamura Date: Sat, 10 May 2025 22:29:04 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Enable=20the=20`--source-path`=20and=20`-pa?= =?UTF-8?q?rameters`=20options=20to=20make=20use=20of=20Gradle=E2=80=99s?= =?UTF-8?q?=20incremental=20annotation=20processing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gradle/compile/ConfigureKotlin.groovy | 13 ++++------ .../doma/gradle/compile/ConfigureJava.java | 18 ++++---------- .../doma/gradle/compile/CopyResources.java | 24 ------------------- 3 files changed, 9 insertions(+), 46 deletions(-) delete mode 100644 compile/src/main/java/org/seasar/doma/gradle/compile/CopyResources.java diff --git a/compile/src/main/groovy/org/seasar/doma/gradle/compile/ConfigureKotlin.groovy b/compile/src/main/groovy/org/seasar/doma/gradle/compile/ConfigureKotlin.groovy index 38ee7fb..c8f270e 100644 --- a/compile/src/main/groovy/org/seasar/doma/gradle/compile/ConfigureKotlin.groovy +++ b/compile/src/main/groovy/org/seasar/doma/gradle/compile/ConfigureKotlin.groovy @@ -3,20 +3,15 @@ package org.seasar.doma.gradle.compile import org.gradle.api.Project import org.gradle.api.tasks.SourceSet -import java.util.function.Supplier - class ConfigureKotlin { static void configure(Project project, SourceSet sourceSet) { project.plugins.withId('kotlin-kapt') { - def tasks = project.tasks def kapt = project.extensions.getByName('kapt') - def compileKotlin = tasks.named('compileKotlin') - def dir = compileKotlin.get().destinationDirectory.getAsFile().get() - kapt.arguments { arg('doma.resources.dir', dir) } - def copyResources = tasks.register(CopyResources.NAME + "Kotlin", CopyResources.class, sourceSet, dir) - compileKotlin.configure { - dependsOn copyResources + def resourceDirs = sourceSet.resources.srcDirs + kapt.javacOptions { + option '--source-path', resourceDirs.join(File.pathSeparator) + option '-parameters', '' } } } diff --git a/compile/src/main/java/org/seasar/doma/gradle/compile/ConfigureJava.java b/compile/src/main/java/org/seasar/doma/gradle/compile/ConfigureJava.java index 843efbd..304b812 100644 --- a/compile/src/main/java/org/seasar/doma/gradle/compile/ConfigureJava.java +++ b/compile/src/main/java/org/seasar/doma/gradle/compile/ConfigureJava.java @@ -1,29 +1,21 @@ package org.seasar.doma.gradle.compile; +import java.io.File; +import java.util.Set; import org.gradle.api.Project; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskContainer; -import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.compile.JavaCompile; -import org.gradle.language.jvm.tasks.ProcessResources; public class ConfigureJava { public static void configure(Project project, SourceSet sourceSet) { TaskContainer tasks = project.getTasks(); + Set resourceDirs = sourceSet.getResources().getSrcDirs(); JavaCompile javaCompile = tasks.named(sourceSet.getCompileJavaTaskName(), JavaCompile.class).get(); - TaskProvider processResources = - tasks.named(sourceSet.getProcessResourcesTaskName(), ProcessResources.class); - TaskProvider copyResources = - tasks.register( - CopyResources.NAME + "Java", - CopyResources.class, - sourceSet, - javaCompile.getDestinationDirectory()); - - javaCompile.dependsOn(copyResources); - processResources.configure(task -> task.exclude(CopyResources.DOMA_RESOURCES)); + javaCompile.getOptions().setSourcepath(project.files(resourceDirs)); + javaCompile.getOptions().getCompilerArgs().add("-parameters"); } } diff --git a/compile/src/main/java/org/seasar/doma/gradle/compile/CopyResources.java b/compile/src/main/java/org/seasar/doma/gradle/compile/CopyResources.java deleted file mode 100644 index f8bf228..0000000 --- a/compile/src/main/java/org/seasar/doma/gradle/compile/CopyResources.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.seasar.doma.gradle.compile; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import javax.inject.Inject; -import org.gradle.api.tasks.Copy; -import org.gradle.api.tasks.SourceSet; - -public class CopyResources extends Copy { - - public static final String NAME = "domaCopyResources"; - - public static final List DOMA_RESOURCES = - Collections.unmodifiableList( - Arrays.asList("doma.compile.config", "META-INF/**/*.sql", "META-INF/**/*.script")); - - @Inject - public CopyResources(SourceSet sourceSet, Object destinationDirectory) { - from(sourceSet.getResources().getSourceDirectories()); - into(destinationDirectory); - include(DOMA_RESOURCES); - } -} From c219f47f3e19f75bee001c276a008b6b786c37e3 Mon Sep 17 00:00:00 2001 From: Toshihiro Nakamura Date: Sat, 10 May 2025 22:30:13 +0900 Subject: [PATCH 3/4] Skip tests until Doma 3.8.0 is released --- .github/workflows/ci.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 512c311..34cd301 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,17 +35,18 @@ jobs: - name: Build plugin run: ./gradlew build - - name: Test plugin against Java - working-directory: ./compile-java-test - run: ./gradlew build - - - name: Test plugin against Kotlin - working-directory: ./compile-kotlin-test - run: ./gradlew build - - - name: Test plugin against a mix of Java and Kotlin - working-directory: ./compile-mix-test - run: ./gradlew build +# TODO +# - name: Test plugin against Java +# working-directory: ./compile-java-test +# run: ./gradlew build +# +# - name: Test plugin against Kotlin +# working-directory: ./compile-kotlin-test +# run: ./gradlew build +# +# - name: Test plugin against a mix of Java and Kotlin +# working-directory: ./compile-mix-test +# run: ./gradlew build - name: Set version id: set-version From 78b7bc4844aabf6dd4d63dccd25fe7b6c8883068 Mon Sep 17 00:00:00 2001 From: Toshihiro Nakamura Date: Sat, 10 May 2025 23:27:00 +0900 Subject: [PATCH 4/4] Refactor and update README.md for clarity and accuracy --- README.md | 88 +++++++++++++++++++++++-------------------------------- 1 file changed, 37 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index f22ff55..aecf2ee 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,38 @@ Doma Compile Plugin =================== -Doma compile plugin is a gradle plugin. -It allows annotation processors to read Doma resources at compile-time. +The Doma Compile Plugin is a Gradle plugin that allows annotation processors to read Doma resources at compile-time. -The plugin supports Java and Kotlin. +The plugin supports both Java and Kotlin. [![Java CI with Gradle](https://github.com/domaframework/doma-compile-plugin/workflows/Java%20CI%20with%20Gradle/badge.svg)](https://github.com/domaframework/doma-compile-plugin/actions?query=workflow%3A%22Java+CI+with+Gradle%22) -[![project chat](https://img.shields.io/badge/zulip-join_chat-green.svg)](https://domaframework.zulipchat.com) +[![Project Chat](https://img.shields.io/badge/zulip-join_chat-green.svg)](https://domaframework.zulipchat.com) [![Twitter](https://img.shields.io/badge/twitter-@domaframework-blue.svg?style=flat)](https://twitter.com/domaframework) -How to use +How to Use ---------- -See [Gradle Plugin Portal](https://plugins.gradle.org/plugin/org.domaframework.doma.compile). +See the [Gradle Plugin Portal](https://plugins.gradle.org/plugin/org.domaframework.doma.compile). -What does the plugin do ? +What Does the Plugin Do? ------------------------- -The plugin is equivalent to the following gradle script: +The plugin is equivalent to the following Gradle Kotlin DSL script: -```groovy -def domaResources = ['doma.compile.config', 'META-INF/**/*.sql', 'META-INF/**/*.script'] - -task copyDomaResourcesJava(type: Copy) { - from sourceSets.main.resources.srcDirs - into compileJava.destinationDir - include domaResources -} - -compileJava { - dependsOn copyDomaResourcesJava -} - -processResources { - exclude domaResources -} - -task copyDomaResourcesKotlin(type: Copy) { - from sourceSets.main.resources.srcDirs - into compileKotlin.destinationDir - include domaResources -} - -compileKotlin { - dependsOn copyDomaResourcesKotlin +```kotlin +tasks { + compileJava { + val resourceDirs = sourceSets.getByName("main").resources.srcDirs + options.sourcepath = files(resourceDirs) + options.compilerArgs.add("-parameters") + } } kapt { - arguments { - arg('doma.resources.dir', compileKotlin.destinationDir) + javacOptions { + val resourceDirs = sourceSets.getByName("main").resources.srcDirs + option("--source-path", resourceDirs.join(File.pathSeparator)) + option("-parameters") } } ``` @@ -60,28 +43,31 @@ Example build.gradle.kts - Java: https://github.com/domaframework/simple-examples/blob/master/build.gradle.kts - Kotlin: https://github.com/domaframework/kotlin-sample/blob/master/build.gradle.kts -Major versions +Version Information --------------------- ### Status and Repository -| Version | Status | Repository | Branch | -|-----------------------|-----------------|--------------------------------------------------------------------------------------------|--------| -| Doma Compile Plugin 2 | limited-support | [domaframework/doma-compile-plugin](https://github.com/domaframework/doma-compile-plugin/) | 2.x | -| Doma Compile Plugin 3 | stable | [domaframework/doma-compile-plugin](https://github.com/domaframework/doma-compile-plugin/) | master | +| Version | Status | Repository | Branch | +|-----------------------|------------------|--------------------------------------------------------------------------------------------|--------| +| Doma Compile Plugin 2 | Limited Support | [domaframework/doma-compile-plugin](https://github.com/domaframework/doma-compile-plugin/) | 2.x | +| Doma Compile Plugin 3 | Limited Support | [domaframework/doma-compile-plugin](https://github.com/domaframework/doma-compile-plugin/) | 3.x | +| Doma Compile Plugin 4 | Stable | [domaframework/doma-compile-plugin](https://github.com/domaframework/doma-compile-plugin/) | master | -### Compatibility matrix +### Compatibility Matrix -The supported versions of Doma: +Doma Version Compatibility: -| | Doma 2 | Doma 3 | -|-----------------------|--------|--------| -| Doma Compile Plugin 2 | v | | -| Doma Compile Plugin 3 | | v | +| | Doma 2 | Doma 3.0 - 3.7 | Doma 3.8 or later | +|-----------------------|--------|----------------|-------------------| +| Doma Compile Plugin 2 | ✓ | | | +| Doma Compile Plugin 3 | | ✓ | | +| Doma Compile Plugin 4 | | | ✓ | -The minimum supported versions of Java: +Java Version Requirements: -| | Java 8 | Java 17 | -|-----------------------|--------|---------| -| Doma Compile Plugin 2 | v | | -| Doma Compile Plugin 3 | | v | +| | Java 8 or later | Java 17 or later | +|-----------------------|------------------|-------------------| +| Doma Compile Plugin 2 | ✓ | | +| Doma Compile Plugin 3 | | ✓ | +| Doma Compile Plugin 4 | | ✓ |