[lombok] Add simple way to use lombok plugin in one project with kapt
This commit is contained in:
committed by
TeamCityServer
parent
79d49e6dbd
commit
99f9b79c87
+3
-1
@@ -700,7 +700,9 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To
|
|||||||
val newCompilerArgs = oldCompilerArgs.filterTo(mutableListOf()) {
|
val newCompilerArgs = oldCompilerArgs.filterTo(mutableListOf()) {
|
||||||
it !is CharSequence || !it.toString().startsWith("-proc:")
|
it !is CharSequence || !it.toString().startsWith("-proc:")
|
||||||
}
|
}
|
||||||
newCompilerArgs.add("-proc:none")
|
if (!kaptExtension.keepJavacAnnotationProcessors) {
|
||||||
|
newCompilerArgs.add("-proc:none")
|
||||||
|
}
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
options.compilerArgs = newCompilerArgs as List<String>
|
options.compilerArgs = newCompilerArgs as List<String>
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -46,6 +46,11 @@ open class KaptExtension {
|
|||||||
@Deprecated("Use `annotationProcessor()` and `annotationProcessors()` instead")
|
@Deprecated("Use `annotationProcessor()` and `annotationProcessors()` instead")
|
||||||
open var processors: String = ""
|
open var processors: String = ""
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true keeps annotation processors added via `annotationProcessor(..)` configuration for javac java-files compilation
|
||||||
|
*/
|
||||||
|
open var keepJavacAnnotationProcessors: Boolean = false
|
||||||
|
|
||||||
/** Opt-out switch for Kapt caching. Should be used when annotation processors used by this project are suspected of
|
/** Opt-out switch for Kapt caching. Should be used when annotation processors used by this project are suspected of
|
||||||
* using anything aside from the task inputs in their logic and are not guaranteed to produce the same
|
* using anything aside from the task inputs in their logic and are not guaranteed to produce the same
|
||||||
* output on subsequent runs without input changes. */
|
* output on subsequent runs without input changes. */
|
||||||
@@ -146,4 +151,4 @@ private fun Any?.executeClosure(closure: Closure<*>) {
|
|||||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||||
closure.delegate = this
|
closure.delegate = this
|
||||||
closure.call()
|
closure.call()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import plugins.configureDefaultPublishing
|
|
||||||
|
|
||||||
description = "Kotlin lombok compiler plugin"
|
description = "Kotlin lombok compiler plugin"
|
||||||
|
|
||||||
|
|||||||
+1
-8
@@ -7,19 +7,15 @@ package org.jetbrains.kotlin.lombok.gradle
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
class LombokSubplugin @Inject internal constructor(private val registry: ToolingModelBuilderRegistry) :
|
class LombokSubplugin : KotlinCompilerPluginSupportPlugin {
|
||||||
KotlinCompilerPluginSupportPlugin {
|
|
||||||
|
|
||||||
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean =
|
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean =
|
||||||
(kotlinCompilation.platformType == KotlinPlatformType.jvm || kotlinCompilation.platformType == KotlinPlatformType.androidJvm)
|
(kotlinCompilation.platformType == KotlinPlatformType.jvm || kotlinCompilation.platformType == KotlinPlatformType.androidJvm)
|
||||||
|
|
||||||
override fun apply(target: Project) {
|
override fun apply(target: Project) {
|
||||||
target.extensions.create("kotlinLombok", LombokExtension::class.java)
|
target.extensions.create("kotlinLombok", LombokExtension::class.java)
|
||||||
// registry.register(AllOpenModelBuilder())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyToCompilation(kotlinCompilation: KotlinCompilation<*>): Provider<List<SubpluginOption>> {
|
override fun applyToCompilation(kotlinCompilation: KotlinCompilation<*>): Provider<List<SubpluginOption>> {
|
||||||
@@ -32,9 +28,6 @@ class LombokSubplugin @Inject internal constructor(private val registry: Tooling
|
|||||||
extension.configurationFile?.let { configFile ->
|
extension.configurationFile?.let { configFile ->
|
||||||
options += SubpluginOption("config", configFile.absolutePath)
|
options += SubpluginOption("config", configFile.absolutePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
options
|
options
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Features support:
|
|||||||
- [x] Basic support
|
- [x] Basic support
|
||||||
- [x] Class-level
|
- [x] Class-level
|
||||||
- [x] @Accessors config support: chain and fluent
|
- [x] @Accessors config support: chain and fluent
|
||||||
- [ ] Config support (_lombok.getter.noIsPrefix_ only supported)
|
- [ ] Config support (_lombok.getter.noIsPrefix_ only supported atm)
|
||||||
- [ ] Copy annotations
|
- [ ] Copy annotations
|
||||||
- [ ] Strip defined prefixes - in config and @Accessors
|
- [ ] Strip defined prefixes - in config and @Accessors
|
||||||
- [ ] Skip generation with AccessLevel.NONE
|
- [ ] Skip generation with AccessLevel.NONE
|
||||||
@@ -40,7 +40,7 @@ Other todos:
|
|||||||
- [x] Generic classes
|
- [x] Generic classes
|
||||||
- [x] Actually run compiled code
|
- [x] Actually run compiled code
|
||||||
- [x] Don't generate members that already exist (if having a duplicate is a problem)
|
- [x] Don't generate members that already exist (if having a duplicate is a problem)
|
||||||
- [ ] Gradle integration (as subplugin or just a way to enable lombok support)
|
- [x] Gradle integration (as subplugin or just a way to enable lombok support)
|
||||||
- [ ] Maven integration (as subplugin or just a way to enable lombok support)
|
- [ ] Maven integration (as subplugin or just a way to enable lombok support)
|
||||||
- [ ] Nullability from annotations. Check if it is inherited from variable definition
|
- [ ] Nullability from annotations. Check if it is inherited from variable definition
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user