2012-07-11 79 views
1

我必須在我的ZIP包裝中從存儲庫(比如本地)複製一個jar。我明白我們可以在依賴關係中定義編譯/運行時。但是,我無法在ZIP中使用它們。Gradle壓縮包裝:從存儲庫複製Jar文件

我可以通過在文件系統中指定路徑來複制jar文件。但是,我不知道如何從存儲庫中執行它。

這裏是我的代碼看起來是這樣的:

task createZipFile (type: Zip, dependsOn: [...]) { 

    baseName 'xyz' 

    from(fileTree("src/main"), { 
     include "prjName/css/**" 
     include "prjName/images/**" 
     include "prjName/javascript/**" 
     include "prjName/WEB-INF/**" 
     exclude "prjName/WEB-INF/web.xml" 
    }) 

    from file("<Absolute-path-to-jar-file-in-my-filesystem>") //this works 
    // how to copy the same jar file from repository ?? 
} 

回答

3

假設你的依賴是在運行時配置即:

runtime 'org.slf4j:slf4j-log4j12:1.6.2' 

,你可以這樣做:

task createZipFile(type: Zip, dependsOn: [...]) { 
    baseName 'xyz' 
    from fileTree("src/main"), { 
     include "prjName/css/**" 
     include "prjName/images/**" 
     include "prjName/javascript/**" 
     include "prjName/WEB-INF/**" 
     exclude "prjName/WEB-INF/web.xml" 
    } 

    from configurations.runtime.files { it.name == 'slf4j-log4j12' } 
} 

要添加所有罐子下載的名稱爲slf4j-log4j12

+0

非常感謝。我正在尋找類似的東西。如果我想複製多個罐子怎麼辦?我添加'OR'條件? – Chris 2012-07-11 10:12:43

+0

@Chris如果你想添加更多的話,它會複製'slf4j-log4j12''的所有jar依賴關係,我可能會添加更多的'from'行來輪流捕獲這些依賴關係(或者你可以將這個依賴關係存儲到一個方法中獲取名稱列表並將結果收集到文件列表中,所以您可以調用類似'from depFinder('slf4j-log4j12','something-else')' – 2012-07-11 10:18:24

+0

那麼..我的情況有點不同在這裏,我只想要我指定的罐子,我不想要它們的依賴關係,我只是檢查它是在複製所有的依賴關係 – Chris 2012-07-11 10:25:40