2012-10-20 15 views
11

Tôi muốn vượt qua deployDir (với giá trị /my_archive) để uploadArchives nhiệm vụ trong my_project:Cách sử dụng startParameters trong tác vụ BuildGradle?

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

Tôi không biết làm thế nào để khai báo các thông số bắt đầu. Tôi đã thử các cách khác nhau, ví dụ:

startParameter = [deployDir:"/my_archive"] 

Không thành công.

Làm cách nào để khai báo startParameter trong tác vụ GradleBuild?

Trả lời

14

Tôi giả sử bạn muốn chuyển số deployDir làm project property. Trong trường hợp này, bạn sẽ tìm thấy ở đó là một phương pháp setProjectProperties(Map) bạn có thể sử dụng:

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

này sẽ cho phép bạn truy cập vào deployDir như là một biến từ gọi là xây dựng kịch bản:

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

Câu trả lời thực sự hiệu quả! Hoan hô! – Corin

0

chúng ta có thể thiết lập các tính chất của dự án và tính chất hệ thống thông qua api

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

đây là mẫu từ địa phương của tôi cho 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(); 
} 

chúng ta có thể tham khảo các api từ liên kết này StartParameter

các startparameter thực sự mạnh mẽ trong gradle khi bạn cần để tùy chỉnh gradle xây dựng logic của bạn.

Các vấn đề liên quan