I am trying to create simple greeter plugin for gradle written in clojure. Currently i am filing misserably. Despite my all good intentions and big amount of debugging i am unable to pass apply stage of plugin.
Stacktrace is looking like:
Caused by: java.lang.UnsupportedOperationException
at org.gradle.api.internal.AbstractTask.getInputs(AbstractTask.java:425)
at ru.aardvark.gradle.plugin.GreetingTask.getInputs(Unknown Source)
at ru.aardvark.gradle.plugin.GreetingTask_Decorated.getInputs(Unknown Source)
at org.gradle.api.internal.project.taskfactory.DependencyAutoWireTaskFactory.autoWire(DependencyAutoWireTaskFactory.java:48)
at org.gradle.api.internal.project.taskfactory.DependencyAutoWireTaskFactory.createTask(DependencyAutoWireTaskFactory.java:39)
at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:62)
at org.gradle.api.internal.project.AbstractProject.task(AbstractProject.java:878)
at clojure_gradle_plugin.greeting.plugin$_apply.invoke(plugin.clj:9)
at ru.aardvark.gradle.plugin.GreetingPlugin.apply(Unknown Source)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
Is there something i am doing wrong? If am using simple groovy plugin (ones that come with distribution, everything works fine)
Clojure implementation code:
(ns clojure-gradle-plugin.greeting.plugin
(:import (org.gradle.api Project Plugin Task))
(:gen-class
:name ru.aardvark.gradle.plugin.GreetingPlugin
:implements [org.gradle.api.Plugin]))
(defn -apply [this ^org.gradle.api.Project target]
(.task target {"type" ru.aardvark.gradle.plugin.GreetingTask} "clojureHello" ))
(ns clojure-gradle-plugin.greeting.task
(:import (org.gradle.api DefaultTask)
(org.gradle.api.tasks TaskAction))
(:gen-class
:extends org.gradle.api.DefaultTask
:name ru.aardvark.gradle.plugin.GreetingTask
:methods [[greet ^{TaskAction {}} [] String]]))
(defn -greet []
print "hello from ClojureGreetingTask")
Gradle build code:
buildscript {
repositories {
mavenCentral()
jcenter()
maven {
url uri("repo")
}
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'clojure-gradle-plugin', name: 'clojure-gradle-plugin', version: '0.1.0-SNAPSHOT'
classpath group: 'org.gradle', name: 'customPlugin', version: '1.0-SNAPSHOT'
}
}
apply plugin: 'org.samples.greeting'
apply plugin: 'ru.aardvark.clojure.greeting'
If anyone have some assumption why this may fails i am open to all suggestions.