17

我想将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"]

没有成功。

如何在 GradleBuild 任务中声明startParameter

4

2 回答 2

24

deployDir我假设您的意思是作为项目属性传递。在这种情况下,您会发现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'))
  }
 }
}
于 2012-10-21T00:57:55.573 回答
1

我们可以通过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引用 api

当您需要自定义 gradle 构建逻辑时,start 参数在 gradle 中非常强大。

于 2016-11-01T03:06:55.910 回答