Build: Use embedded configuration for compiler plugins

This commit is contained in:
Vyacheslav Gerasimov
2019-04-24 16:34:50 +03:00
parent 50e145f239
commit 8851029baa
7 changed files with 22 additions and 70 deletions
+4 -28
View File
@@ -1,15 +1,8 @@
@file:Suppress("unused") // usages in build scripts are not tracked properly
import org.gradle.api.Project
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.api.*
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.*
import org.gradle.kotlin.dsl.*
import org.gradle.language.jvm.tasks.ProcessResources
//import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
inline fun Project.sourceSets(crossinline body: SourceSetsBuilder.() -> Unit) =
SourceSetsBuilder(this).body()
inline fun Project.sourceSets(crossinline body: SourceSetsBuilder.() -> Unit) = SourceSetsBuilder(this).body()
class SourceSetsBuilder(val project: Project) {
@@ -40,23 +33,6 @@ val SourceSet.projectDefault: Project.() -> Unit
}
}
// TODO: adding KotlinSourceSet dep to the plugin breaks the build unexpectedly, resolve and uncomment
//val SourceSet.kotlin: SourceDirectorySet
// get() =
// (this as HasConvention)
// .convention
// .getPlugin(KotlinSourceSet::class.java)
// .kotlin
//
//
//fun SourceSet.kotlin(action: SourceDirectorySet.() -> Unit) =
// kotlin.action()
fun Project.getSourceSetsFrom(projectPath: String): SourceSetContainer {
evaluationDependsOn(projectPath)
return project(projectPath).sourceSets
}
val Project.sourceSets: SourceSetContainer
get() = javaPluginConvention().sourceSets
+2 -9
View File
@@ -4,11 +4,6 @@ apply plugin: 'jps-compatible'
configureJvmProject(project)
configurePublishing(project)
repositories {
mavenLocal()
jcenter()
}
pill {
variant = 'FULL'
}
@@ -25,9 +20,9 @@ dependencies {
testCompile gradleApi()
testCompile "junit:junit:4.12"
}
evaluationDependsOn(":kotlin-allopen-compiler-plugin")
embedded(project(":kotlin-allopen-compiler-plugin")) { transitive = false }
}
tasks.withType(project.compileKotlin.class) {
kotlinOptions.languageVersion = "1.2"
@@ -36,8 +31,6 @@ tasks.withType(project.compileKotlin.class) {
}
jar {
from(project(":kotlin-allopen-compiler-plugin").sourceSets.main.output.classesDirs)
from(project(":kotlin-allopen-compiler-plugin").sourceSets.main.output.resourcesDir)
manifestAttributes(manifest, project)
}
+2 -9
View File
@@ -10,11 +10,6 @@ compileJava {
options.fork = false
}
repositories {
mavenLocal()
jcenter()
}
pill {
variant = 'FULL'
}
@@ -31,9 +26,9 @@ dependencies {
testCompile gradleApi()
testCompile "junit:junit:4.12"
}
evaluationDependsOn(":kotlin-noarg-compiler-plugin")
embedded(project(":kotlin-noarg-compiler-plugin")) { transitive = false }
}
tasks.withType(project.compileKotlin.class) {
kotlinOptions.languageVersion = "1.2"
@@ -42,8 +37,6 @@ tasks.withType(project.compileKotlin.class) {
}
jar {
from(project(":kotlin-noarg-compiler-plugin").sourceSets.main.output.classesDirs)
from(project(":kotlin-noarg-compiler-plugin").sourceSets.main.output.resourcesDir)
manifestAttributes(manifest, project)
}
@@ -14,11 +14,6 @@ pill {
variant = 'FULL'
}
repositories {
mavenLocal()
jcenter()
}
dependencies {
compile project(':kotlin-gradle-plugin-api')
compile project(':kotlin-gradle-plugin-model')
@@ -31,9 +26,9 @@ dependencies {
testCompile gradleApi()
testCompile "junit:junit:4.12"
}
evaluationDependsOn(":kotlin-sam-with-receiver-compiler-plugin")
embedded(project(":kotlin-sam-with-receiver-compiler-plugin")) { transitive = false }
}
tasks.withType(project.compileKotlin.class) {
kotlinOptions.languageVersion = "1.2"
@@ -42,8 +37,6 @@ tasks.withType(project.compileKotlin.class) {
}
jar {
from(project(":kotlin-sam-with-receiver-compiler-plugin").sourceSets.main.output.classesDirs)
from(project(":kotlin-sam-with-receiver-compiler-plugin").sourceSets.main.output.resourcesDir)
manifestAttributes(manifest, project)
}
@@ -3,17 +3,17 @@ apply plugin: 'kotlin'
configureJvmProject(project)
configurePublishing(project)
dependencies {
embedded(project(":kotlinx-serialization-compiler-plugin")) { transitive = false }
}
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
options.fork = false
}
evaluationDependsOn(":kotlinx-serialization-compiler-plugin")
jar {
from(project(":kotlinx-serialization-compiler-plugin").sourceSets.main.output.classesDirs)
from(project(":kotlinx-serialization-compiler-plugin").sourceSets.main.output.resourcesDir)
manifestAttributes(manifest, project)
}
@@ -20,13 +20,11 @@ dependencies {
compileOnly kotlinStdlib()
compileOnly project(path: ':kotlin-compiler-embeddable', configuration: 'runtimeJar')
embedded(project(":kotlinx-serialization-compiler-plugin")) { transitive = false }
}
evaluationDependsOn(":kotlinx-serialization-compiler-plugin")
jar {
from(project(":kotlinx-serialization-compiler-plugin").sourceSets.main.output.classesDirs)
from(project(":kotlinx-serialization-compiler-plugin").sourceSets.main.output.resourcesDir)
manifestAttributes(manifest, project)
}
@@ -17,6 +17,9 @@ dependencies {
runtime(projectRuntimeJar(":kotlin-compiler-embeddable"))
compileOnly(commonDep("com.google.android", "android"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
embedded(project(":plugins:android-extensions-compiler")) { isTransitive = false }
embedded(project(":kotlin-android-extensions-runtime")) { isTransitive = false }
}
sourceSets {
@@ -24,16 +27,12 @@ sourceSets {
"test" {}
}
val jar: Jar by tasks
jar.apply {
from(getSourceSetsFrom(":plugins:android-extensions-compiler")["main"].output)
from(getSourceSetsFrom(":kotlin-android-extensions-runtime")["main"].output)
duplicatesStrategy = DuplicatesStrategy.FAIL
}
publish()
val jar: Jar by tasks
runtimeJar(rewriteDepsToShadedCompiler(jar))
sourcesJar()
javadocJar()