Gradle war插件不包括自定义插件的输出

Gradle war插件不包括自定义插件的输出,gradle,Gradle,我已经创建了一个简单的自定义gradle插件,该插件生成属性文件,我需要将该属性文件包含在类路径的根目录中。所有的“java”插件都可以正常工作——属性文件包含在jar文件的根目录中。 我希望war文件将属性文件包含到WEB-INF\classes中,但事实并非如此 我得到在build/createVersion中创建的属性文件(即任务已执行),但它不包含在参考资料中。当我将build.gradle更改为包含任务输出目录时,属性文件就可以很好地打包了 下面是该插件的简化代码 class Vers

我已经创建了一个简单的自定义gradle插件,该插件生成属性文件,我需要将该属性文件包含在类路径的根目录中。所有的“java”插件都可以正常工作——属性文件包含在jar文件的根目录中。 我希望war文件将属性文件包含到WEB-INF\classes中,但事实并非如此

我得到在build/createVersion中创建的属性文件(即任务已执行),但它不包含在参考资料中。当我将build.gradle更改为包含任务输出目录时,属性文件就可以很好地打包了

下面是该插件的简化代码

class VersionGeneratorPlugin implements Plugin<Project> {
    void apply(Project project) {
        // apply java plugin
        project.configure(project) {
            apply plugin: 'java'
        }
        // Add the 'versioning' extension object
        project.extensions.create("versioning", VersionExtension)
        // add task to create version.properties file
        project.task('createVersion') {
            // inputs and outputs of the task - using closures to have extension data available
            // .. inputs definition ...
            outputs.dir(project.file({ "${project.buildDir}/createProperties" }))

            doLast {
                // create property file
            }

            doFirst {
                // load defaults or use data from extension
            }
        }
        // add the properties file to the jar/war file
        project.sourceSets.main.resources {
            srcDirs project.files(project.createVersion.outputs)
        }
        // create dependency from classes to this task
        project.processResources.dependsOn(project.createVersion)
    }
}

class VersionExtension {
    // .. extension data I want passed in from the build ..
}
class VersionGeneratorPlugin实现插件{
无效申请(项目){
//应用java插件
项目。配置(项目){
应用插件:“java”
}
//添加“版本控制”扩展对象
project.extensions.create(“版本控制”,VersionExtension)
//添加任务以创建version.properties文件
project.task('createVersion'){
//任务的输入和输出-使用闭包提供扩展数据
//…输入定义。。。
outputs.dir(project.file({“${project.buildDir}/createProperties}))
多拉斯特{
//创建属性文件
}
首先{
//加载默认值或使用扩展名中的数据
}
}
//将属性文件添加到jar/war文件中
project.sourceset.main.resources{
srcDirs project.files(project.createVersion.outputs)
}
//创建类对此任务的依赖关系
project.processResources.dependsOn(project.createVersion)
}
}
类VersionExtension{
//..我希望从生成中传入的扩展数据。。
}
你知道怎么了吗?为什么任务输出没有包含在war文件中,但包含在jar文件中?好吧,我已经做了我该做的

  • 定义任务的输出
  • 将输出添加到资源中
  • 使任务在processResources任务之前执行

好的,原来问题不正确。我能够通过更改构建脚本中的资源声明来解决这个问题,即插件任务是可以的,但是构建脚本做到了这一点

sourceSets {
    main {
        resources {
            srcDirs = [
                'resource_folder',
            ]
        }
    }
}
这将覆盖插件所做的配置。下面是正确的表格(添加了+)

很可能我的插件仍然有问题,因为gradle文档使用“=”而不是“+=”,我想说我的插件是唯一一个被此破坏的插件

sourceSets {
    main {
        resources {
            srcDirs += [
                'resource_folder',
            ]
        }
    }
}