我目前正在模块化我们的gradle构建,以便有一个包含大量全局内容的libs/commons.gradle文件。我需要这个,因为软件的各个分支正在并行开发,我们希望避免在所有分支之间传播每个脚本文件更改。
所以我创建了这个lib文件,并使用“apply from”加载它:
应用于:“gradle/glib/commons.gradle”
在commons.grade内部,我定义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中的子函数(在包含的脚本中定义)?
感谢任何帮助!