2012-10-20 18 views
11

我想通過deployDir(具有值/my_archive)至uploadArchives任務my_project如何在BuildGradle任務中使用startParameters?

task build (type: GradleBuild) { 
     buildFile = './my_project/build.gradle' 
     tasks = ['uploadArchives'] 
     /* startParameter = [deployDir:"/my_archive"] ??? */  
} 

我不知道如何申報的啓動參數。我嘗試過不同的方式,例如,

startParameter = [deployDir:"/my_archive"] 

沒有成功。

如何在GradleBuild任務中聲明startParameter

回答

14

我假定你的意思是通過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')) 
    } 
} 
} 
+0

實際工作的答案!萬歲! – Corin

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

的startparameter引用API在gradle這個真的很強大,當你需要定製您的gradle這個構建邏輯。

相關問題