Java 渐变配置到自定义插件

Java 渐变配置到自定义插件,java,gradle,Java,Gradle,我正试图更好地理解gradle插件可以做什么。我已经读了一些,但是 我觉得它不能回答我的问题 现在我们有几个项目是通过ear插件内置到ear文件中的。 然而,对于我们所有的ear项目,我们目前在company_ear.gradle文件中有一堆其他配置 我们在ear项目的build.gradle文件中应用 我们公司的示例_ear.gradle: allprojects { tasks.withType(JavaCompile) { sourceCompatibility = "1

我正试图更好地理解gradle插件可以做什么。我已经读了一些,但是 我觉得它不能回答我的问题

现在我们有几个项目是通过ear插件内置到ear文件中的。 然而,对于我们所有的ear项目,我们目前在company_ear.gradle文件中有一堆其他配置 我们在ear项目的build.gradle文件中应用

我们公司的示例_ear.gradle:

allprojects {
  tasks.withType(JavaCompile) {   
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7" 
  }
}

apply plugin: 'ear'

ear {
  appDirName 'application'
  rename('([^-]*)(.*)(.war)', '$1$3')
  rename('([^-]*)(.*)(.jar)', '$1$3')
}

task devDeploy (type: Copy, dependsOn: assemble) {
  //code to do local deploy of ear
}

// More custom stuff that should apply to all ear-projects
所以我的问题是,有没有可能把它移到一个定制的gradle插件上,这样我就可以只使用“apply plugin:company ear”?我了解如何执行“devDeploy”任务
在一个插件中,但我无法理解如何修复所有项目,在自定义插件中应用插件:“ear”和ear块。

您可以将上面的所有代码移动到一个Gradle插件中。Gradle插件使用的API与构建脚本中使用的API相同。唯一的区别是,如果您正在编写二进制插件,则必须使用
项目
实例。@BenjaminMuschko,看起来几乎可以工作了。在我的旧文件中,我有如下内容:project.task buildPaa(类型:Zip){这定义了一些要添加到zip的文件。但当我在插件中使用此文件时,gradle出现错误,说它找不到zip属性。我尝试将其更改为zip.class,但这并没有改变任何内容。有任何线索可以解决此问题吗?通过使用org.gradle.api.tasks.bundling.zip使其正常工作只需要压缩和导入。