В настоящее время я модернизирую нашу градиентную сборку, чтобы иметь файл libs/commons.gradle, содержащий много глобального материала. Мне нужно это из-за того, что различные ветви программного обеспечения разрабатываются параллельно, и мы хотели бы избежать распространения каждого изменения скриптового файла среди всех ветвей.Gradle: как я могу назвать 'def' из импортированного скрипта?
Так что я создал, что Lib файл и использовать "применяются с", чтобы загрузить его:
применяются с: 'Gradle/бойким/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'.
...
Итак, мой запрос: Как я могу назвать подфункцию в градиенте, которая определена во включенном скрипте?
Любая помощь оценена!
это работает для меня. большое спасибо! – gorefest