2016-11-24 21 views
1

build.gradle.ktsスクリプトからantタスクにアクセスするにはどうすればよいですか?特に、私はant.patchタスクに興味があります。gradle-script-kotlinのantタスクの使用

これを拡張することはできますか?

task("patchSources", Patch::class) { 

他のタスクから呼び出すことはできますか?

task("patchSources") { 
    doLast { 
     ant.patch(...) 
    } 
} 

私はGroovyでそれを行う方法を知っている:How do I apply a patch file in Gradle?

答えて

1

これは私の作品:

import org.apache.tools.ant.taskdefs.Patch 

val patchConfigTask = task("patchConfig") { 
    dependsOn(unzipTask)  

    doLast { 
     val resources = projectDir.resolve("src/main/resources") 
     val patchFile = resources.resolve("config.patch") 

     Patch().apply { 
      setPatchfile(patchFile) 
      setDir(buildDir.resolve("config/")) 
      setStrip(1) // gets rid of the a/ b/ prefixes 
      execute() 
     } 
    } 
} 

私はそれがツーDO-1-右の方法かどうかわかりませんそれ。

0

AntBuilderは、GroovyのAntBuilderから続きます。のようなgroovyの動的メソッド呼び出しをinvokeMethodを使用して変換し、最初の引数として必要なタスクと2番目の引数のマップとしてバインドするプロパティを提供することで、Kotlinに変換できます。

たとえば、あなたのパッチユースケース(available properties documentation)のためにKotlinは、次のようになります。

val patchSources by tasks.creating { 
    doLast { 
    ant.invokeMethod("patch", mapOf(
     "patchfile" to patchFile, 
     "dir" to configDir, 
     "strip" to 1 
    )) 
    } 
} 
関連する問題