Gradle:如何从导入的脚本中调用'def'?

 秦风2502869477 发布于 2022-12-23 17:30

我目前模块化我们的gradle构建,以便有一个包含许多全局内容的libs/commons.gradle文件.我需要这个,因为并行开发的软件的各个分支,我们希望避免在所有分支之间传播每个脚本文件的变化.

所以我创建了lib文件并使用"apply from"来加载它:

申请自:'gradle/glib/commons.gradle'

在commons.gradle里面我定义了svnrevision函数:

...

def svnRevision = {
    ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
    SVNClientManager clientManager = SVNClientManager.newInstance(options);
    SVNStatusClient statusClient = clientManager.getStatusClient();
    SVNStatus status = statusClient.doStatus(projectDir, false);
    SVNRevision revision = status.getCommittedRevision();
    return revision.getNumber().toString();
}

...

我正在调用包含build.gradle的函数:

...

task writeVersionProperties {
    File f = new File(project.webAppDirName+'/WEB-INF/version.properties');
    if (f.exists()) { f.delete(); }

    f = new File(project.webAppDirName+'/WEB-INF/version.properties');
    FileOutputStream os = new FileOutputStream(f);
    os.write(("version="+svnRevision()).getBytes());
    os.flush();
    os.close();
}

...

但我最终进入:

...

FAILURE: Build failed with an exception.

    * Where:
    Build $PATH_TO/build20.gradle

    * What went wrong:
    A problem occurred evaluating root project 'DEV_7.X.X_GRADLEZATION'.
    > Could not find method svnRevision() for arguments [] on root project 'DEV_7.X.X_GRADLEZATION'.

...

所以我的问题是:如何在gradle中调用子函数,这是在包含的脚本中定义的?

任何帮助赞赏!

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