Как использовать startParameters в задаче BuildGradle?
Я хотел бы передать deployDir
(со значением /my_archive
) в задачу uploadArchives
в my_project
:
task build (type: GradleBuild) {
buildFile = './my_project/build.gradle'
tasks = ['uploadArchives']
/* startParameter = [deployDir:"/my_archive"] ??? */
}
Я не знаю, как объявить начальные параметры. Я пробовал разные способы, например,
startParameter = [deployDir:"/my_archive"]
Без успеха.
Как объявить startParameter в задаче GradleBuild?
Ответы
Ответ 1
Я предполагаю, что вы хотите передать deployDir
в качестве свойства проекта . В этом случае вы найдете метод setProjectProperties(Map)
, который вы можете использовать:
task build (type: GradleBuild) {
buildFile = './my_project/build.gradle'
tasks = ['uploadArchives']
startParameter.projectProperties = [deployDir: "/my_archive"]
}
Это позволит вам получить доступ к deployDir
в качестве переменной из вызываемой сборки script:
uploadArchives {
repositories {
mavenDeployer {
repository(url: deployDir)
// --- or, if deployDir can be empty ---
repository(url: project.properties.get('deployDir', 'file:///default/path'))
}
}
}
Ответ 2
мы можем установить свойства проекта и свойства системы через api
setProjectProperties(Map<String,String> projectProperties)
setSystemPropertiesArgs(Map<String,String> systemPropertiesArgs)
вот образец из моего локального для startParameter:
task startBuild(type: GradleBuild) {
StartParameter startParameter = project.gradle.startParameter;
Iterable<String> tasks = new ArrayList<String>();
Iterable<String> excludedTasks = new ArrayList<String>();
startParameter.getProjectProperties().each { entry ->
println entry.key + " = " + entry.value;
if(entry.key.startsWith('t_')){
tasks << (entry.key - 't_');
}
if(entry.key.startsWith('build_') && "true" == entry.value){
tasks << (':' + (entry.key - 'build_') +':build');
}
if(entry.key.startsWith('x_') && "true" == entry.value){
excludedTasks << (entry.key - 'x_');
}
}
startParameter.setTaskNames(tasks);
startParameter.setExcludedTaskNames(excludedTasks);
println startParameter.toString();
}
мы можем ссылаться на api из этой ссылки StartParameter
начальный параметр действительно мощный в gradle, когда вам нужно настроить логику сборки gradle.