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