我想将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"]
没有成功。
如何在GradleBuild任务中声明startParameter?
答案 0 :(得分:19)
我认为您的意思是将deployDir
作为project property传递。在这种情况下,您会发现可以使用setProjectProperties(Map)
方法:
task build (type: GradleBuild) {
buildFile = './my_project/build.gradle'
tasks = ['uploadArchives']
startParameter.projectProperties = [deployDir: "/my_archive"]
}
这使您可以从被调用的构建脚本中访问deployDir
作为变量:
uploadArchives {
repositories {
mavenDeployer {
repository(url: deployDir)
// --- or, if deployDir can be empty ---
repository(url: project.properties.get('deployDir', 'file:///default/path'))
}
}
}
答案 1 :(得分:0)
我们可以通过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();
}
我们可以通过此链接StartParameter
引用api当您需要自定义gradle构建逻辑时,startparameter在gradle中非常强大。