gpt4 book ai didi

java - 从自定义 gradle 插件中的 jar 复制文件

转载 作者:行者123 更新时间:2023-11-30 07:11:56 25 4
gpt4 key购买 nike

我编写了一个自定义 gradle 插件,我想将特定文件从类路径中的 jar 复制到 buildDir 中。我在一个沙盒项目中尝试并使这个解决方案起作用:

task copyFile(type: Copy) {
from zipTree(project.configurations.compile.filter{it.name.startsWith('spring-webmvc')}.singleFile)
include "overview.html"
into project.buildDir
}

但是如果将它复制到我的插件中:

project.task(type: Copy, "copyFile") {
from zipTree(project.configurations.compile.filter{it.name.startsWith('spring-webmvc')}.singleFile)
include "overview.html"
into project.buildDir
}

我得到了错误:

* What went wrong:
A problem occurred evaluating root project 'gradle-springdoc-plugin-test'.
> Could not find method zipTree() for arguments [/Users/blackhacker/.gradle/caches/artifacts-26/filestore/org.springframework/spring-webmvc/4.0.0.RELEASE/jar/a82202c4d09d684a8d52ade479c0e508d904700b/spring-webmvc-4.0.0.RELEASE.jar] on task ':copyFile'.

结果

println project.configurations.compile.filter{it.name.startsWith('spring-webmvc')}.singleFile.class

class java.io.File

我做错了什么?

最佳答案

与构建脚本不同,插件没有隐式的 project 上下文(除非你给它一个)。因此,您必须使用 project.task 而不是 taskproject.zipTree 而不是 zipTreeproject.file 而不是 file

PS:在您的情况下,重要的是使用 project.zipTree { ... }(注意大括号)来推迟搜索文件,直到实际请求 Zip 内容。否则,您可能会减慢每次构建调用的速度(即使是那些从不执行 copyFile 的调用),如果文件是由同一构建生成的,甚至会导致构建失败(因为配置在文件被解析之前就已解析)已添加)。

关于java - 从自定义 gradle 插件中的 jar 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20726599/

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