Извлечение общих методов из сценария сборки Gradle
И это работает для методов. Но я хочу внедрить класс, который будет выполнять определение задачи.
mytask.gradle
Код: Выделить всё
class doSomethingTask extends DefaultTask {
@Input
String someData
@TaskAction
void taskAction() {
Код: Выделить всё
apply from mytask.gradle
task doSomething(type: doSomethingTask) {
dependsOn(clean, build)
someData = "$mydata"
}
Как это исправить?
Есть ли метод для экспорта определения класса (например, ext { Tasks.mydef = ... ) ?
Или есть другой способ.
Реальная задача код больше, и я не хочу загрязнять свой gradle build.
НОВОЕ ИЗМЕНЕНИЕ
Предложено Саймоном, я создаю такой файл
Код: Выделить всё
buildSrc/build.gradle
Код: Выделить всё
plugins {
id 'groovy' // Groovy or Kotlin can also be used
}
tasks.register('myTask3', MyTask3.class)
Код: Выделить всё
buildSrc/src/main/groovy/MyTaks3.groovy
Код: Выделить всё
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.Input
class MyTask3 extends DefaultTask {
@Input String name
@TaskAction
void taskAction(){
//Something
Код: Выделить всё
A problem occurred evaluating project ':buildSrc'.
> Could not get unknown property 'PostProcessOpenApiCodeTask3' for project ':buildSrc' of type org.gradle.api.Project.
Я использую старую gradle, 5.5, поэтому документации мало.
Если кто-нибудь может помочь...
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/792 ... radle-file