araqnid
03/07/2018, 4:51 PMFlorian Wiesner
03/07/2018, 4:51 PMaraqnid
03/07/2018, 4:52 PMthe<JavaPluginConvention>().sourceCompatibility = JavaVersion.VERSION_1_8
Florian Wiesner
03/07/2018, 4:54 PMaraqnid
03/07/2018, 4:54 PMval SourceSet.scala: SourceDirectorySet
get() = withConvention(ScalaSourceSet::class) { scala }
Florian Wiesner
03/07/2018, 4:54 PMaraqnid
03/07/2018, 4:55 PMFlorian Wiesner
03/07/2018, 4:55 PMaraqnid
03/07/2018, 4:56 PMCzar
03/07/2018, 4:57 PMplugins {}
block instead of buildscript {}
, that will generate proper DSL for you, e.g.
plugins {
java
}
java {
sourceCompatibility = VERSION_1_8
targetCompatibility = VERSION_1_8
}
Florian Wiesner
03/07/2018, 4:57 PMaraqnid
03/07/2018, 4:58 PMExtensionContainerExtensions.kt
in the DSL plugin to allow you to write extensions["xxx"]
etcreporting
are project extensionsFlorian Wiesner
03/07/2018, 4:59 PMplugins {
id("info.florian-wiesner.magicdraw")
}
the<florianwiesner.gradle.magicdraw.MagicDrawExtension>()
leads to an unresolved referencearaqnid
03/07/2018, 5:04 PMextensions.findByType(ReportingExtension::class.java)
which that should be sugar forFlorian Wiesner
03/07/2018, 5:04 PMplugins{}
DSLaraqnid
03/07/2018, 5:07 PMFlorian Wiesner
03/07/2018, 5:07 PMclass MagicDrawGradlePlugin : Plugin<Project> {
private lateinit var project: Project
override fun apply(project: Project?) {
if (project == null) throw GradleException("project must not be null")
this.project = project
val extension = addExtension<MagicDrawExtension>("magicdraw", project.objects)
val verifyMagicDrawTask = project.tasks.create("verifyMagicDraw", VerifyMagicDrawTask::class.java)
verifyMagicDrawTask.installDir = extension.installDir as String? ?: ""
}
private inline fun <reified T> addExtension(name: String, vararg args: Any): T = project.extensions.create(name, T::class.java, *args)
}
araqnid
03/07/2018, 5:08 PMmagicdraw
magicdraw { ... }
in the build script, and the glue should have made a Project.magicdraw extension propertyFlorian Wiesner
03/07/2018, 5:08 PMmagicdraw{...}
is therearaqnid
03/07/2018, 5:09 PMFlorian Wiesner
03/07/2018, 5:10 PMaraqnid
03/07/2018, 5:10 PMFlorian Wiesner
03/07/2018, 5:10 PMaraqnid
03/07/2018, 5:10 PMFlorian Wiesner
03/07/2018, 5:10 PMaraqnid
03/07/2018, 5:11 PMFlorian Wiesner
03/07/2018, 5:12 PMGradleRunner
supports Kotlin DSLaraqnid
03/07/2018, 5:13 PMFlorian Wiesner
03/07/2018, 5:13 PMaraqnid
03/07/2018, 5:13 PMFlorian Wiesner
03/07/2018, 5:13 PMaraqnid
03/07/2018, 5:14 PMFlorian Wiesner
03/07/2018, 5:14 PMplugins{id()...)}
finds my plugin and loads itplugins{...}
might work because it is somewhat separated from the rest of the scriptval fooVersion:String by extra
plugins {
id("bar") version fooVersion
}
won’t workaraqnid
03/07/2018, 5:18 PMFlorian Wiesner
03/07/2018, 5:19 PMbuildscript
araqnid
03/07/2018, 5:19 PMFlorian Wiesner
03/07/2018, 5:19 PMplugins
blockaraqnid
03/07/2018, 5:20 PMFlorian Wiesner
03/07/2018, 5:21 PMaraqnid
03/07/2018, 5:22 PMFlorian Wiesner
03/07/2018, 5:22 PMaraqnid
03/07/2018, 5:22 PMFlorian Wiesner
03/07/2018, 5:23 PMaraqnid
03/07/2018, 5:37 PM/tmp/.gradle-test-kit-shaslam/caches/4.5/gradle-kotlin-dsl-accessors
-- i tried just removing the caches, no changeAny
/**
* Configures the [webpack][com.timgroup.gradle.webpack.WebpackProjectExtension] project extension.
*
* `webpack` is not accessible in a type safe way because:
* - `com.timgroup.gradle.webpack.WebpackProjectExtension` is not available
*/
fun Project.`webpack`(configure: Any.() -> Unit): Unit =
extensions.configure("webpack", configure)
Florian Wiesner
03/07/2018, 6:51 PMmkobit
03/08/2018, 6:32 PM