Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,10 @@ The Doma Compile Plugin is a Gradle plugin that allows annotation processors to

### Project Structure
- **compile/**: Main plugin implementation
- `CompilePlugin.java`: Entry point that applies configurations
- `ConfigureJava.java`: Configures Java compilation to include resource directories in sourcepath
- `ConfigureKotlin.groovy`: Configures Kotlin/KAPT to include resource directories
- `CompilePlugin.java`: Entry point that delegates to CompileConfigurator
- `CompileConfigurator.java`: Central configuration manager that coordinates Java and Kotlin configuration
- `JavaCompileConfigurator.java`: Configures Java compilation tasks to include resource directories in sourcepath
- `KotlinCompileConfigurator.groovy`: Configures Kotlin/KAPT tasks to include resource directories

- **Test Projects**: Three separate Gradle projects for testing different scenarios
- `compile-java-test/`: Tests plugin with pure Java
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.seasar.doma.gradle.compile

import org.gradle.api.Project
import org.gradle.api.tasks.SourceSet

/**
* Configures Kotlin/KAPT compilation tasks for Doma annotation processing.
*/
class KotlinCompileConfigurator {

private static final String KOTLIN_KAPT_PLUGIN_ID = 'kotlin-kapt'
private static final String KAPT_EXTENSION_NAME = 'kapt'
private static final String SOURCE_PATH_OPTION = '--source-path'
private static final String PARAMETERS_OPTION = '-parameters'

private final Project project

KotlinCompileConfigurator(Project project) {
this.project = Objects.requireNonNull(project)
}

void configure(SourceSet sourceSet) {
project.plugins.withId(KOTLIN_KAPT_PLUGIN_ID) {
configureKapt(sourceSet)
}
}

private void configureKapt(SourceSet sourceSet) {
def kapt = project.extensions.getByName(KAPT_EXTENSION_NAME)
def resourceDirs = sourceSet.resources.srcDirs
def sourcePath = resourceDirs.join(File.pathSeparator)

kapt.javacOptions {
option SOURCE_PATH_OPTION, sourcePath
option PARAMETERS_OPTION, ''
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.seasar.doma.gradle.compile;

import java.util.Objects;
import org.gradle.api.Project;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.tasks.SourceSet;

/** Configures compilation tasks for Doma annotation processing. */
class CompileConfigurator {

private final Project project;
private final JavaCompileConfigurator javaConfigurator;
private final KotlinCompileConfigurator kotlinConfigurator;

CompileConfigurator(Project project) {
this.project = Objects.requireNonNull(project);
this.javaConfigurator = new JavaCompileConfigurator(project);
this.kotlinConfigurator = new KotlinCompileConfigurator(project);
}

void configure() {
var javaExtension = project.getExtensions().getByType(JavaPluginExtension.class);
var mainSourceSet = javaExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);

configureSourceSet(mainSourceSet);
}

private void configureSourceSet(SourceSet sourceSet) {
javaConfigurator.configure(sourceSet);
kotlinConfigurator.configure(sourceSet);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,20 @@
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.tasks.SourceSet;

/**
* Gradle plugin that configures annotation processors to read Doma resources at compile-time. This
* plugin automatically configures both Java and Kotlin compilation tasks.
*/
public class CompilePlugin implements Plugin<Project> {

@Override
public void apply(Project project) {
project
.getPlugins()
.withType(
JavaPlugin.class,
javaPlugin -> {
JavaPluginExtension javaPluginExtension =
project.getExtensions().getByType(JavaPluginExtension.class);
SourceSet mainSourceSet =
javaPluginExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
ConfigureJava.configure(project, mainSourceSet);
ConfigureKotlin.configure(project, mainSourceSet);
});
project.getPlugins().withType(JavaPlugin.class, javaPlugin -> configureProject(project));
}

private void configureProject(Project project) {
var configurator = new CompileConfigurator(project);
configurator.configure();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.seasar.doma.gradle.compile;

import java.util.Objects;
import org.gradle.api.Project;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.compile.JavaCompile;

/** Configures Java compilation tasks for Doma annotation processing. */
class JavaCompileConfigurator {

private static final String PARAMETERS_COMPILER_ARG = "-parameters";

private final Project project;

JavaCompileConfigurator(Project project) {
this.project = Objects.requireNonNull(project);
}

void configure(SourceSet sourceSet) {
var resourceDirs = sourceSet.getResources().getSrcDirs();
var compileTaskName = sourceSet.getCompileJavaTaskName();

project
.getTasks()
.named(compileTaskName, JavaCompile.class)
.configure(
javaCompile -> {
javaCompile.getOptions().setSourcepath(project.files(resourceDirs));
javaCompile.getOptions().getCompilerArgs().add(PARAMETERS_COMPILER_ARG);
});
}
}