2

私は最近、Gradle ですべてのビルド/リリース エンジニアリング ジョブを実装するように指示されました。

したがって、私はGradleを初めて使用し、シェルプロンプトですぐにわかるいくつかのことは、この勇敢な新しい世界では理解するのが難しい.

私のビルドは一連の jar ファイルを作成します。

それらのそれぞれに対してシェルタスクを実行する必要があります

次のようなもの:

task findBugs (type:Exec, dependsOn:  fb23) {commandLine 'java', '-jar',
'./findBugs/findbugs.jar',  '-textui', '-progress', '-xml', '-output',
'TrustManagerService.xml', 'TrustManagerService.jar'}

(私たちは JDK8 を使用しているため、FindBugs プラグインを使用できません。そのため、プレビュー バージョンから外部で FindBugs を実行しています...)

ファイル コレクションを取得し、次のようなファイル名を反復処理できます。

FileTree iotTree = fileTree(dir: '.')
iotTree.include '*.jar'
iotTree.each {
File file -> println file.name
println 'A file'
}

また

def iotJars = files(file('./jars').listFiles())
println ''
println iotJars
iotJars.each { File file -> println 'The next file is: ' + file.name }

しかし、私の人生では、返されたファイル名ごとにシェルコマンドを実行する方法がわかりません...

これを行う最も簡単な方法についての考え??

ところで、コード リストに改行を含める最良の方法は何ですか?改行するには、各行に CR を返して追加する必要がありました...:(

4

1 に答える 1

8

executeでメソッドを使用してString、シェル コマンドを実行できます。

タスクの例を次に示します。

task executeExample << {
  FileTree ioTree = fileTree(dir: ".")
  ioTree.each { f ->
    def proc  = "ls -l ${f}".execute();
    proc.waitFor();
    println "return code: ${ proc.exitValue()}"
    println "stderr: ${proc.err.text}"
    println "stdout: ${proc.in.text}"
  }
}
于 2014-02-27T12:33:55.043 に答える