2012-10-20 11 views
11

Chciałbym przekazać deployDir (o wartości /my_archive) do uploadArchives zadania w my_project:Jak używać startParameters w zadaniu BuildGradle?

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

nie wiem jak deklarować parametrów startowych. Próbowałem na różne sposoby, np.

startParameter = [deployDir:"/my_archive"] 

Bez powodzenia.

Jak zadeklarować startParameter w zadaniu GradleBuild?

Odpowiedz

14

Zakładam, że masz zamiar przekazać deployDir jako project property. W tym przypadku, znajdziesz tam jest setProjectProperties(Map) sposób można użyć:

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

Pozwoli to na dostęp deployDir jako zmienna z wywoływanego skryptu produkcji:

uploadArchives { 
repositories { 
    mavenDeployer { 
    repository(url: deployDir) 
    // --- or, if deployDir can be empty --- 
    repository(url: project.properties.get('deployDir', 'file:///default/path')) 
    } 
} 
} 
+0

Odpowiedź, która faktycznie działa! Brawo! – Corin

0

możemy ustawić właściwości projektu i właściwości systemu za pośrednictwem interfejsu API

setProjectProperties(Map<String,String> projectProperties) 
setSystemPropertiesArgs(Map<String,String> systemPropertiesArgs) 

oto próbka z moim lokalnym dla 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(); 
} 

możemy odwołać api z tego linku StartParameter

startparameter jest naprawdę potężny w Gradle kiedy trzeba dostosować Gradle gromadzeniu logiki.

Powiązane problemy