独立的 gradle 插件可以导出自定义任务类型吗?
Can a standalone gradle plugin export a custom task type?
我有一个包含自定义任务类型的 standalone Gradle plugin:
gradle-conventions/build.gradle
plugins {
id 'groovy-gradle-plugin'
id 'maven-publish'
}
group = 'com.example'
version = '1.0'
publishing {
repositories {
maven {
url = uri('/path/to/repo')
}
}
}
gradle-conventions/src/main/groovy/com.example.my-conventions.gradle
abstract class CustomTask extends DefaultTask {
@TaskAction
def hello() {
println "hello"
}
}
我可以使用另一个项目的插件,但我如何注册 CustomTask
?像这样:
project/build.gradle
plugins {
id 'com.example.my-conventions' version '1.0'
}
// how do I reference CustomTask here?
tasks.register('myCustomTask', com.example.CustomTask) {
// ...
}
是否可以从自定义插件中导出自定义任务?或者我必须 consume custom tasks using the buildscript
mechanism?
查看gradle-conventions-1.0.jar
,自定义任务class似乎属于默认包,所以我可以注册任务如下:
project/build.gradle
plugins {
id 'com.example.my-conventions' version '1.0'
}
tasks.register('myCustomTask', CustomTask) {
// ...
}
但这只有效 com.example.my-conventions.gradle
除了 class 本身之外还包含 groovy 代码,否则我得到错误:
An exception occurred applying plugin request [id: 'com.example.my-conventions', version: '1.0']
> Failed to apply plugin 'com.example.my-conventions'.
> java.lang.ClassNotFoundException: precompiled_ComExampleMyConventions
这种方法避免依赖 buildscript
mechanism(Gradle 文档中不推荐)。
我有一个包含自定义任务类型的 standalone Gradle plugin:
gradle-conventions/build.gradle
plugins {
id 'groovy-gradle-plugin'
id 'maven-publish'
}
group = 'com.example'
version = '1.0'
publishing {
repositories {
maven {
url = uri('/path/to/repo')
}
}
}
gradle-conventions/src/main/groovy/com.example.my-conventions.gradle
abstract class CustomTask extends DefaultTask {
@TaskAction
def hello() {
println "hello"
}
}
我可以使用另一个项目的插件,但我如何注册 CustomTask
?像这样:
project/build.gradle
plugins {
id 'com.example.my-conventions' version '1.0'
}
// how do I reference CustomTask here?
tasks.register('myCustomTask', com.example.CustomTask) {
// ...
}
是否可以从自定义插件中导出自定义任务?或者我必须 consume custom tasks using the buildscript
mechanism?
查看gradle-conventions-1.0.jar
,自定义任务class似乎属于默认包,所以我可以注册任务如下:
project/build.gradle
plugins {
id 'com.example.my-conventions' version '1.0'
}
tasks.register('myCustomTask', CustomTask) {
// ...
}
但这只有效 com.example.my-conventions.gradle
除了 class 本身之外还包含 groovy 代码,否则我得到错误:
An exception occurred applying plugin request [id: 'com.example.my-conventions', version: '1.0']
> Failed to apply plugin 'com.example.my-conventions'.
> java.lang.ClassNotFoundException: precompiled_ComExampleMyConventions
这种方法避免依赖 buildscript
mechanism(Gradle 文档中不推荐)。