Java 在评估阶段使用Gradle插件配置属性
我正在编写自己的gradle插件,并希望定义一个额外的复制任务。 我所做的是:Java 在评估阶段使用Gradle插件配置属性,java,plugins,groovy,gradle,build.gradle,Java,Plugins,Groovy,Gradle,Build.gradle,我正在编写自己的gradle插件,并希望定义一个额外的复制任务。 我所做的是: myPlugin { scriptsDir = "otherDir" } class MyPluginExtension { String scriptsDir = "scripts"; } class MyPlugin implements Plugin<Project> { @Override void apply(Project project) {
myPlugin {
scriptsDir = "otherDir"
}
class MyPluginExtension {
String scriptsDir = "scripts";
}
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.extensions.create("myPlugin", MyPluginExtension)
project.task("myDistCopy", type: Copy) {
.....
from(project.myPlugin.scriptDir) {
into('bin')
}
}
}
}
myPlugin{
scriptsDir=“otherDir”
}
类myplugin{
字符串scriptsDir=“scripts”;
}
类MyPlugin实现插件{
@凌驾
无效申请(项目){
project.extensions.create(“myPlugin”,MyPluginExtension)
任务(“myDistCopy”,类型:Copy){
.....
from(project.myPlugin.scriptDir){
进入(‘bin’)
}
}
}
}
不幸的是,这些文件仍然是从“scripts”文件夹而不是“otherDir”中复制的。在评估阶段似乎没有设置扩展属性。你知道如何在复制任务中引用myPlugin设置吗
谢谢 事实上,对我有效的解决方案非常简单:
project.task("myDistCopy", type: Copy) {
.....
project.afterEvaluate {
from(project.myPlugin.scriptDir) {
into('bin')
}
}
}
是,在评估阶段未设置扩展属性。作为一种解决方法,您可以实现类型为
Copy
(extends)的自定义任务,并指定带有@OutputDirectory
注释的属性-这样您就可以轻松配置它。感谢您的回复。我没能轻易地完成这项任务。你有一些例子吗?事实上,我需要读取输入,我尝试了@InputDirectory注释,但它没有真正起作用。不幸的是,我没有任何示例:/但是我如何从扩展属性设置用@OutputDirectory注释的属性?感谢事实上,从这一点来看,这似乎正是Gradle旨在实现这一目的的功能。谢谢