簡體   English   中英

如何使用Gradle從已編譯的類創建其他jar工件?

[英]How do you create additional jar artifacts from compiled classes using Gradle?

我不知道這是Gradle 1.0m7的錯誤,還是我們只是做錯了。

我們有一些類被編譯為項目的一部分,我們希望將它們單獨地放入它自己的工件中。 這些是例如我們想要與另一個項目共享的獨立域模型對象。

我不想去多項目構建路線,那么我們如何告訴Gradle為這些創建另一個jar?

目前我們這樣做:

task modelJar(type: Jar) {
    classifier = 'model'
    from fileTree(dir: sourceSets.main.classesDir).matching { include 'com/foo/bar/model/**' }
}

artifacts {
    archives modeljar
}

這里的問題是modeljar任務編譯類之前運行。 起初我們沒有意識到這一點,並認為這是有效的。 事實證明,工件正在從上一次運行中獲取類,而不是當前運行。 在構建之前執行clean會導致jar中沒有類,並顯示問題。

我在看自定義配置,但它似乎相當復雜,我不想過度復雜的構建文件。

感謝任何建議。

謝謝。

最方便的方法是

task modelJar(type: Jar) {
    classifier = 'model'
    from sourceSets.main.output
    include 'com/foo/bar/model/**'
}

一些背景知識:sourceSets.main.output是一個可構建的文件集合。 這意味着如果任務使用此文件集合,則gradle知道必須先創建此文件集合,然后其他任務才能使用它。 在這種特殊情況下,sourcesets.main.classes連接到java插件的classes任務。 因此,您的modelJar任務不需要明確依賴於類任務。

如何使modelJar任務依賴於classes (內置)任務? 這應該確保在modelJar任務之前完成編譯。

task modelJar(dependsOn: classes, type: Jar){
  ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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