2012-10-20 4 views
11

würde Ich mag deployDir passieren (mit Wert /my_archive) zu uploadArchives Aufgabe in my_project:Wie startParameters in BuildGradle Aufgabe zu verwenden?

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

Ich weiß nicht, wie die Startparameter zu erklären. Ich habe verschiedene Möglichkeiten ausprobiert, zum Beispiel

startParameter = [deployDir:"/my_archive"] 

Ohne Erfolg.

Wie deklariert manD3210 in der GradleBuild Aufgabe?

Antwort

14

Ich nehme an, Sie meinen, die deployDir als project property zu übergeben. In diesem Fall werden Sie feststellen, es gibt eine setProjectProperties(Map) Methode, die Sie verwenden können:

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

Dies ermöglicht es Ihnen deployDir als Variable für den Zugriff aus dem Build-Skript aufgerufen:

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

Eine Antwort, die tatsächlich funktioniert! Hurra! – Corin

0

wir setzen können die Projekteigenschaften und Systemeigenschaften über die api

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

hier ist die Probe von meinem lokalen für STARTPARAMTER:

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(); 
} 

wir die api von diesem Link verweisen können StartParameter

der start ist wirklich mächtig in gradle, wenn Sie Ihre gradle Build-Logik müssen anpassen.

Verwandte Themen