【问题标题】:zip a file and move it gradle压缩文件并将其移动到gradle
【发布时间】:2018-02-08 13:12:40
【问题描述】:

我正在尝试压缩模块中的内容,排除 builds 文件夹,但它没有运行。我在任务外执行println,这可行,但任务内不会打印任何内容。

task fullZip(type: Zip) {
    baseName = 'client' //name of the module
    from 'client' //name of the module
    exclude 'build'
    into '../docker/client'
    doFirst { println 'before zip' }
    doLast { println 'after zip' }

}

这是一个多模块项目,我已经运行了 gradle clean buildgradle build 其他模块工作正常,但它们的任务是复制一个 jar,我在这些任务结束时使用 assemble.dependsOn。在这种情况下这行不通。

我只想压缩模块并将其移动到我将解压缩的其他目录。

【问题讨论】:

  • 你应该never call execute on tasks!它不是公共 Gradle API 的一部分。相反,让 Gradle 通过命令行指定任务或注册任务依赖项来执行任务。
  • @lu.koerfer 好的,我删除了执行。我仍然无法运行此任务。
  • 如何调用 Gradle,输出是什么?你的项目结构如何?请在您的问题中添加这些详细信息。
  • @lu.koerfer 请看更新
  • 您想独立调用它(通过gradle fullZip)还是作为常规构建生命周期的一部分(无论何时调用gradle build)?请添加gradle build 调用的输出。

标签: gradle groovy


【解决方案1】:

聊天讨论总结:

task fullZip(type: Zip) {
    baseName = 'client'
    from projectDir
    exclude 'build'
    destinationDir = file('../docker/client')
}

build.dependsOn fullZip

主要问题是 from 参数中的相对路径,它确实有效,因为它是相对于项目目录进行解释的。

另外,根据the docsinto方法...

指定文件存档内部的目标目录。根据Project.file(java.lang.Object) 评估目的地。不要将它与指定存档输出目录的AbstractArchiveTask.getDestinationDir() 混淆。

这两种方法混在一起了。最后,通过任务依赖注册将任务添加到构建生命周期中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2019-08-09
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多