簡體   English   中英

Gradle-將jar復制到另一個文件夾,作為“ jar”任務的一部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM