[英]Gradle - copy jar to another folder as part of the 'jar' task
我有一個多項目gradle設置。 我想在重建jar的任何時候簡單地復制任何項目的生成的jar文件,並認為這將在我的根項目的subprojects閉包中起作用:
task copyJarToGenerated(type: Copy) {
from jar
into "../my-generated-jars/"
}
copyJarToGenerated.mustRunAfter jar
但是,如果我運行任何子項目的“ clean”任務然后執行“ jar”任務,則我的jar照常在build / libs下生成,但不會被復制。
查看gradle輸出,它僅運行compileJava,processResources,類,然后運行jar。 它沒有運行copyJarToGenerated。
方法mustRunAfter
沒有定義任務依賴關系,它只是強制執行特定順序。 它基本上說“如果兩個任務都在構建中執行(無論出於何種原因),那么它們將以指定的順序執行”。
因此,您需要自己定義任務依賴項:
jar.finalizedBy copyJarToGenerated
您還可以只添加copyJarToGenerated
作為生命周期任務build
的依賴項:
build.dependsOn copyJarToGenerated
由於您指定的任務jar
的方法from
你的任務中,已被注冊為輸入的任務,並為此隱性登記的任務相關。 因此,您不再需要使用mustRunAfter
定義順序。
您也可以考慮使用任務jar
destinationDirectory
屬性,而不用完全創建一個新任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.