vlsi commented on a change in pull request #2531:
URL: https://github.com/apache/calcite/pull/2531#discussion_r718198212
##########
File path: core/build.gradle.kts
##########
@@ -187,6 +194,65 @@ ide {
generatedSource(javaCCTest, "test")
}
+fun configureAnnotationSet(task: JavaCompile, sourceSet: SourceSet) {
+ with(task) {
+ source = sourceSet.java
+ classpath = sourceSet.compileClasspath
+ destinationDirectory.set(options.generatedSourceOutputDirectory)
+ options.compilerArgs.add("-proc:only")
+
org.gradle.api.plugins.internal.JvmPluginsHelper.configureAnnotationProcessorPath(sourceSet,
sourceSet.java, options, project)
+ }
+}
+
+val annotationProcessorMain by tasks.registering(JavaCompile::class) {
+ dependsOn(javaCCMain)
+ configureAnnotationSet(this, sourceSets.main.get())
+ // only if we aren't running compileJava, since doing twice fails.
+ onlyIf { tasks.findByPath("compileJava")?.enabled != true }
+}
+
+val annotationProcessorTest by tasks.registering(JavaCompile::class) {
+ val kotlinTestCompile =
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>()
+ .getByName("compileTestKotlin")
+
+ dependsOn(javaCCTest, kotlinTestCompile)
+
+ configureAnnotationSet(this, sourceSets.test.get())
+ classpath += files(kotlinTestCompile.destinationDirectory.get())
+
+ // only if we aren't running compileJavaTest, since doing twice fails.
+ onlyIf { tasks.findByPath("compileTestJava")?.enabled != true }
+}
+
+ide {
+ // generate annotation processed files on project import/sync.
+ // adds to idea path but skip don't add to SourceSet since that triggers
checkstyle
Review comment:
Is adding to "idea path" really needed? In my experiments with your
branch, IDEA was picking up the sources automatically
##########
File path: core/build.gradle.kts
##########
@@ -187,6 +194,65 @@ ide {
generatedSource(javaCCTest, "test")
}
+fun configureAnnotationSet(task: JavaCompile, sourceSet: SourceSet) {
+ with(task) {
+ source = sourceSet.java
+ classpath = sourceSet.compileClasspath
+ destinationDirectory.set(options.generatedSourceOutputDirectory)
+ options.compilerArgs.add("-proc:only")
+
org.gradle.api.plugins.internal.JvmPluginsHelper.configureAnnotationProcessorPath(sourceSet,
sourceSet.java, options, project)
+ }
+}
Review comment:
```suggestion
fun JavaCompile.configureAnnotationSet(sourceSet: SourceSet) {
source = sourceSet.java
classpath = sourceSet.compileClasspath
destinationDirectory.set(options.generatedSourceOutputDirectory)
options.compilerArgs.add("-proc:only")
org.gradle.api.plugins.internal.JvmPluginsHelper.configureAnnotationProcessorPath(sourceSet,
sourceSet.java, options, project)
}
```
`destinationDirectory` should be "directory with the generated class files",
so `options.generatedSourceOutputDirectory` looks wrong here.
##########
File path: core/build.gradle.kts
##########
@@ -187,6 +194,65 @@ ide {
generatedSource(javaCCTest, "test")
}
+fun configureAnnotationSet(task: JavaCompile, sourceSet: SourceSet) {
+ with(task) {
+ source = sourceSet.java
+ classpath = sourceSet.compileClasspath
+ destinationDirectory.set(options.generatedSourceOutputDirectory)
+ options.compilerArgs.add("-proc:only")
+
org.gradle.api.plugins.internal.JvmPluginsHelper.configureAnnotationProcessorPath(sourceSet,
sourceSet.java, options, project)
+ }
+}
+
+val annotationProcessorMain by tasks.registering(JavaCompile::class) {
+ dependsOn(javaCCMain)
+ configureAnnotationSet(this, sourceSets.main.get())
+ // only if we aren't running compileJava, since doing twice fails.
+ onlyIf { tasks.findByPath("compileJava")?.enabled != true }
+}
+
+val annotationProcessorTest by tasks.registering(JavaCompile::class) {
+ val kotlinTestCompile =
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>()
+ .getByName("compileTestKotlin")
+
+ dependsOn(javaCCTest, kotlinTestCompile)
Review comment:
Could you please clarify why compileTestKotlin is required?
It is sad because it would require "compile linq4j" and so on, so it would
probably take noticeable time
##########
File path: core/build.gradle.kts
##########
@@ -187,6 +194,65 @@ ide {
generatedSource(javaCCTest, "test")
}
+fun configureAnnotationSet(task: JavaCompile, sourceSet: SourceSet) {
+ with(task) {
+ source = sourceSet.java
+ classpath = sourceSet.compileClasspath
+ destinationDirectory.set(options.generatedSourceOutputDirectory)
+ options.compilerArgs.add("-proc:only")
+
org.gradle.api.plugins.internal.JvmPluginsHelper.configureAnnotationProcessorPath(sourceSet,
sourceSet.java, options, project)
+ }
+}
+
+val annotationProcessorMain by tasks.registering(JavaCompile::class) {
+ dependsOn(javaCCMain)
+ configureAnnotationSet(this, sourceSets.main.get())
Review comment:
If you use an extension function, then `this` would be passed
automatically.
```suggestion
configureAnnotationSet(sourceSets.main.get())
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]