2016-10-25 7 views
0

私は以下のタスク定義を持っています。クリーンビルド後でも最新のGradle Zipタスク

task generateFile { 
    def file = new File("$buildDir/setclasspath.sh") 
    outputs.file(file) 
    doLast { 
    file.text = "sample" 
    } 
} 

task createDistro(type: Zip, dependsOn: ['jar', 'generateFile']) << {  
from generateFile { 
    fileMode = 0755 
    into 'bin' 
} 
} 

私はgradle clean buildを実行すると問題がgenerateFileタスクが実行されますが、zipファイルのタスクにはありません。

これはなぜですか?きれいにして、Zipタスクの入力を新たに実行させるべきではありませんか?

+1

待機。 generateFileはなぜ動くのですか?あなたは 'gradle clean build 'でそれを呼んでいません! – RaGe

+0

申し訳ありませんが、createDistroにはdependsOn: 'jar'もあります。あなたが明示的に 'gradle createDistro'を呼び出す場合を除いて、 – 75inchpianist

+1

umm' gradle clean build'はまだgenerateFileを呼び出しません。 – RaGe

答えて

1

まず、Gradleのフェーズを理解する必要があります。主に、CONFIGフェーズと実行フェーズがあることを覚えておいてください。これは以前の問題でした:Gradle clean erasing my file prior to ZIP task execution

createDistroで同じ誤りがありました。 <<を使用すると、タスクはdoLastにのみ縮小され、実行フェーズで実行されます。つまり、あなたのZipタスクはfromの部分で構成されていません。したがって、正しい定義は次のようになります。

apply plugin: 'java' 

task generateFile { 
    def file = new File("$buildDir/setclasspath.sh") 
    outputs.file(file) 
    doLast { 
    file.createNewFile() // you need to actually create the file first 
    file.text = "sample" 
    } 
} 

task createDistro(type: Zip, dependsOn: ['jar', 'generateFile']) {  
// this is the configuration of Zip task, do not run it in doLast or '<<' 
from generateFile { 
    fileMode = 0755 
    into 'bin' 
} 
} 

また、コメントに@RaGeが記載されているため、タスクは実行されません。タスクツリーにプラグインする必要があります。

しかし、まだ修正する必要のない問題を解決しようとしていると思います。あなたがやっていることから、gradle distributionプラグインを使うほうが良いかもしれません。

+0

助けてくれてありがとう、私は今それを得ると思います。ちょうど私に2と2を一緒に入れるこの例を取っ​​た。 – 75inchpianist

関連する問題