您好我尝试从子文件夹中收集插件,压缩它们并复制到我的导出文件夹。
task buildPlugin {
dependsOn ':empty-plugin:build'
}
task exportPlugin(type: Zip) {
dependsOn buildPlugin
// create new export folder as destination for nightly build
def folder = '/export';
def file = "${project.name}-sdk-${project.version}";
// collect all plugins into cwc-sdk zip file
baseName = file
fileTree("cwc-plugin").each({
if (it.name.endsWith(".zip")) {
from it.absolutePath
}
})
// move cwc-sdk zip file into export destination folder
copy { into folder from file }
delete file
}
我先运行干净的任务。 gradle日志:
:api:compileJava
:api:processResources
:api:classes
:api:jar
:empty-plugin:compileJava
:empty-plugin:processResources
:empty-plugin:classes
:empty-plugin:jar
:empty-plugin:assemble
:empty-plugin:compileTestJava UP-TO-DATE
:empty-plugin:processTestResources UP-TO-DATE
:empty-plugin:testClasses UP-TO-DATE
:empty-plugin:test UP-TO-DATE
:empty-plugin:check UP-TO-DATE
:api:javadoc
:empty-plugin:zip
:empty-plugin:build
:buildPlugin
:exportPlugin UP-TO-DATE
BUILD SUCCESSFUL
Total time: 2.097 secs
首次运行时:exportPlugin被标记为UP-TO-DATE,我没有从构建中获取压缩文件。当我运行:exportPlugin再一切都很好。当我手动链接两个任务(rungradle clean,下次运行gradle buildPlugin,通过doublclick运行gradle exportPlugin到IDEA的任务)时,它也很好。
我认为任务的顺序仍然可以。我不需要使用mustRunAfter
。
我还玩过copySpec
,buildplugin.outputs.files
。但没有任何帮助。
有人可以帮我解决初始构建运行的问题吗? 谢谢!
更新: Zip任务是抽象的复制任务
AbstractCopyTask是所有复制任务的基类。 (Docu)
我发现了comment from Peter Niederwieser
复制任务只有在有要复制的内容时才会执行。告诉它要复制什么是配置任务的一部分,因此需要在配置阶段而不是执行阶段完成。
如何在fileTree循环中将from it.absolutePath
代码行更改为配置阶段的一部分?