Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在评估阶段使用Gradle插件配置属性_Java_Plugins_Groovy_Gradle_Build.gradle - Fatal编程技术网

Java 在评估阶段使用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) {

我正在编写自己的gradle插件,并希望定义一个额外的复制任务。 我所做的是:

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旨在实现这一目的的功能。谢谢