2つの個別のビルド(sencha cmd)を必要とする2つの個別のアプリ(1つのプロジェクト)があります。私は両方のアプリを構築するでしょうGradleのスクリプトを作成するように求めてきました。
1つのアプリをビルドするタスクを作成しましたが、同じタスクを使用して2番目のアプリをビルドするのに問題があります。
これは私がこれまでに持っているものです:
task senchaCmdBuild (type: Exec) {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
これは正常に機能します。
上記のタスクに次の2行を追加すると:
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
最初のコマンドは無視され、2番目のコマンドのみが実行されます。
とにかく、1つのタスクで両方のコマンドを実行できますか?
2番目の方法を使用して、gradleでタスクタイプを宣言できます。
task senchaCmdBuild {
doLast {
exec {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
exec {
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
}
}
実行フローでのみ実行するには、doLastにexecメソッドを配置する必要があります
タイプExec
のタスクに対して複数のコマンドを構成(実行)することは不可能です。 commandLine
それは単なるセッターです-最後のものが勝ちです。複数のコマンドを実行する必要がある場合、コメントで提案されている@RaGeのように複数のタスクを実装するか、カスタムタスクを作成してgroovyのネイティブメカニズム-execute
メソッドを使用するのが最適です。
代わりにgradle methodsを使用して、架空のタスクを作成することもできます
task senchaBuild() {
doLast {
senchaBuild_steps()
}
}
void senchaBuild_steps() {
exec {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
exec {
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
}
DoLastブロックで.execute()を使用します
task myTask(group: "my-group") {
doLast {
println "Starting..."
println "echo \"MyEcho1\"".execute().text.trim()
println "echo \"MyEcho2\"".execute().text.trim()
}
}