当前位置: 首页 > 知识库问答 >
问题:

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

嵇光临
2023-03-14
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个答案

贾俊艾
2023-03-14

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

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

这将覆盖插件所做的配置。后面的格式正确(添加了+)

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

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

 类似资料:
  • 我在Project中创建了一个简单的gradle插件。根据文档,它应该是好的,但当我尝试使用它时,我发现id为'show-date-plugin'的文档我指的是:https://docs.gradle.org/current/userguide/custom_plugins.html 您可以将插件的源代码放在rootprojectdir/buildsrc/src/main/groovy目录中。Gr

  • 下面的这些代码可以帮助您通过CSS文件和SCSS文件,创建和编译 CSS 和 JS 文件的source-maps。 安装依赖 为了运行编译和压缩任务,你必须安装 node 和 npm。 命令行 // (Optional) Install Gulp module globally npm install gulp -g // Install fullpage's build dependen

  • 是否可以以某种方式配置Spring引导maven插件以包括来自依赖项的资源。 例如,如果在我的spring boot项目中,我有: 在这个JAR文件中有一个属性文件,如 结果1。 但是,当我构建SpringBootJAR时,这个属性文件并没有添加到。包含它的JAR包含在 然而,在我的情况下。我想将的内容提取到Spring BootJAR的引导目录中,这样就可以进行自动配置。 在现实世界中,我试图通

  • 我有一个pom.xml,大致如下所示: 当我运行单元测试时,然后在我的笔记本电脑上本地调用,一切都很好,只有。我的覆盖率是86%。然而,当我让Jenkins使用相同的命令运行单元测试,然后在我的Jenkinsfile中调用时,我最终得到了附加到构建的报告中的所有代码,因此我的覆盖率最终为2%,因为我没有为一些第三方库编写测试。 我该如何解决这个问题?

  • 我正在尝试发送电子邮件时,一个订单被移动到一个自定义状态在Woocommerce。我已经成功地创建了一个插件,它创建了一个自定义状态,订单被分配给自定义状态。 我还成功地在WooCommerce中的Settings->Emails下添加了一个自定义电子邮件模板,并编写了代码,当订单移动到自定义状态时,该代码应该发送电子邮件。 但是,代码不会被触发,电子邮件也不会被发送。 下面是我的代码。 在我编写

  • 插件类是用户编写的, 但是它需要继承自Yaf_Plugin_Abstract. 对于插件来说, 上一节提到的7个Hook, 它不需要全部关心, 它只需要在插件类中定义和上面事件同名的方法, 那么这个方法就会在该事件触发的时候被调用. 而插件方法, 可以接受俩个参数, Yaf_Request_Abstract实例和Yaf_Response_Abstract实例. 一个插件类例子如下: 例 7.1.