17

タスクにdeployDir(値を付けて/my_archive)渡したい:uploadArchivesmy_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();
}

このリンクからAPIを参照できますStartParameter

Gradleビルドロジックをカスタマイズする必要がある場合、startparameterはgradleで非常に強力です。

于 2016-11-01T03:06:55.910 に答える