我创建了一个简单的自定义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我做了我应该做的一切
答案 0 :(得分:0)
好的结果是问题不正确。我能够通过更改构建脚本中的资源声明来解决问题 - 即插件任务正常,但构建脚本执行此操作
sourceSets {
main {
resources {
srcDirs = [
'resource_folder',
]
}
}
}
这会覆盖插件所做的配置。正确的形式如下(添加+)
sourceSets {
main {
resources {
srcDirs += [
'resource_folder',
]
}
}
}
我的插件很可能仍有问题,因为gradle文档使用“=”而不是“+ =”,我说我的插件是唯一被这个打破的插件......