gpt4 book ai didi

gradle - Gradle War插件不包括自定义插件的输出

转载 作者:行者123 更新时间:2023-12-03 05:59:52 26 4
gpt4 key购买 nike

我创建了一个简单的自定义gradle插件,该插件可生成属性文件,并且需要将该属性文件包含在类路径的根目录中。使用“java”插件可以正常工作-jar文件的根目录中包含属性文件。
我希望war文件将属性文件包含到WEB-INF \ classs中,但是那没有发生。

我得到了在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我做了我应该做的
  • 定义任务
  • 的输出
  • 将输出添加到资源
  • 使任务在process之前执行资源任务
  • 最佳答案

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

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

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

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

    关于gradle - Gradle War插件不包括自定义插件的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391701/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com