Gradle"setup"任务(pre-build/compile/jar)

 曾那么执着o的厮守 发布于 2023-02-08 16:37

相对较新的java和gradle - 试图做"正确"的事情.在构建我的应用程序之前(我添加了gradle"应用程序"插件)我想设置一些环境和系统的东西 - 例如,我想创建log /目录和log.txt文件.

所以我做的事情如下:

task setup {
    println 'Setup task executing ...'

    File d = new File('log');
    d.mkdir();
    f = new File(d.getPath() + '/log.txt');
    f.createNewFile();
}

哪个有效 - 但是在运行> gradle setup时我收到了一堆stdout警告

Setup task executing ...
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "f" on "task ':setup'", value: "log/log.txt".
:setup UP-TO-DATE

所以有一个问题:利用Gradle执行设置/安装任务的正确方法是什么?(这应该只在部署应用程序时执行一次)

1 个回答
  • 啊,你正在混合任务配置和执行.这个:

    task foo {
        // Stuff
    }
    

    与此不一样:

    task foo << {
        // Stuff
    }
    

    在第一个中,"stuff"在配置时运行,导致您看到的警告(因为f在此阶段被解释为项目变量).在第二个,它在执行时运行.

    (Gradle很棒,但这种非常微妙的语法区别可能是许多真气虫的来源!)


    至于如何正确地进行设置,当您使用Application插件时,您应该考虑在分发中包含其他资源.

    (您还应该考虑将目录创建逻辑移动到您的应用程序本身,理想情况下,您希望它对于删除日志目录的人来说是健壮的!)

    2023-02-08 16:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有