Как использовать startParameters в задаче BuildGradle?

Я хотел бы передать 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"]

Без успеха.

Как объявить startParameter в задаче GradleBuild?

Ответ 1

Я предполагаю, что вы хотите передать deployDir в качестве свойства проекта . В этом случае вы найдете метод setProjectProperties(Map), который вы можете использовать:

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

Это позволит вам получить доступ к deployDir в качестве переменной из вызываемой сборки script:

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

Ответ 2

мы можем установить свойства проекта и свойства системы через 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();
}

мы можем ссылаться на api из этой ссылки StartParameter

начальный параметр действительно мощный в gradle, когда вам нужно настроить логику сборки gradle.