2017-05-26 10 views
2
task simpleTask{ 
    print("simpleTask is reach"); 
} 

task copySomeFile(type: Copy){ 
    print("copySomeFile is reach"); 
    from baseProjectPath; 
    into toProjectPath; 
    appendXML(); 
} 
def appendXML(){ 
    //modify a.txt 
} 

両方//私はちょうど「simpleTaskを」のみ実行したいのですが、とき「GradleではsimpleTaskは」タスク「copySomeFile」も実行されます!私はbeacuse gradleの初期化を知っています。 Gradle Task。 「(タイプ:コピー)」と<doLast>できない仕事

が、この

task copySomeFile(type: Copy)<<{ 
} 

"copySomeFile" などの書き込みが動作しない場合

「(タイプ:コピー)」は「< <」または「doLast {}」では機能しません。

"--gradle simpleTask" "--gradle copySomeFile"は単独で実行できます。

答えて

1

Gradle build lifecycleを読む必要があります。

メモする必要があるフェーズは、ConfigurationExecutionです。すべてのタスクは常にすべてのビルドで構成されていますが、実際には実行フェーズとして実行されるのはその一部だけです。

表示されているのは、構成フェーズでcopySomeFileタスクが構成されていることです。何もコピーしませんが、設定する必要があります。タスククロージャ内のすべてはタスクの設定です。そのため、出力にprint("copySomeFile is reach");の結果が表示されます。

<<またはdoLastが実行段階で何かを実行するために使用されますが、あなたはそれがdoLastセクションに、構成のすべてを置くか、タスク定義に<<を追加する場合型コピーのあなたのタスクは設定されません - それはなぜコピー理由があります動作しません。

+0

ありがとう@ Stanislav あなたは私に多くを学ばせてくれました。 コードを動作させる方法があれば? 'task copySomeFile(タイプ:コピー)<< { print(" copySomeFile is reach "); baseProjectPathからの ; toProjectPath; //ここにはどのように到達できますか? } ' またはそれを書くことはできません.thanks再び – XaoFay

+0

と" appletXML() "の" copySomeFile "は、" gradle simpleTask "を使用して実行されました。 内容を見るとが変更になりました。それはとても混乱しています。 – XaoFay

+1

@XaoFay https://gist.github.com/jnizet/d38ce94b846130dfae704bf3ad069e6e –

1

よろしくお願いします。どのくらい私はあなたの両方に感謝します。コードを共有する:

task simpleTask { 
    print("\nsimpleTask is configured"); // executed during the configuration plase, always 
    doLast { 
     print("\nsimpleTask is executed"); // executed during the execution plase, only if the simpleTask is executed 
    } 
} 

task copySomeFile(type: Copy) { 
    print("\ncopySomeFile is configured"); // executed always,执行其他任务时,此代码也会执行 
    from "D:/a.txt";// not executed. 执行其他任务时,此代码不会执行 
    into "D:/b.txt";// not executed. 执行其他任务时,此代码不会执行 
    doLast { 
     appendXML(); //only this task executed, the appendXML executed. 只有此task执行时,才会执行.比如(gradle copySomeFile); 
    } 
} 
def appendXML(){ 
    print("\nappendXML"); 
} 
関連する問題