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

时间:2017-02-22 12:36:52

标签: gradle

我创建了一个简单的自定义gradle插件来生成属性文件,我需要包含在类路径根目录中的属性文件。一切正常,#34; java" plugin - 属性文件包含在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 ..
}

任何想法有什么不对?为什么任务输出没有包含在war文件中,但它包含在jar文件中? AFAIK我做了我应该做的一切

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

1 个答案:

答案 0 :(得分:0)

好的结果是问题不正确。我能够通过更改构建脚本中的资源声明来解决问题 - 即插件任务正常,但构建脚本执行此操作

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

这会覆盖插件所做的配置。正确的形式如下(添加+)

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

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