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