2014-02-21 42 views
0

通常情況下,我定義簡單的項目依賴:傳遞項目依賴的依賴時,有一個拉鍊神器

dependencies { 
    compile project(':someProject') 
} 

這非常適用於Java項目。不過,我有一個產生壓縮神器項目:

artifacts { 
    archives file: zipDistribution.archivePath, type: 'zip', builtBy: zipDistribution 
} 

當我做以上依賴定義,當我遍歷在編譯配置的依賴我沒有得到壓縮神器。一個jar文件在那裏,但沒有zip。然而,這卻得到了zip文件:

dependencies { 
    compile project(path: ':someProject', configuration: 'archives') 
} 

太棒了!有用!除了「someProject」有它自己的依賴關係......並且我們沒有更多地傳遞它們。將transitive: true添加到項目依賴項也沒有幫助。

如何獲取項目的zip文物以及與之相關的傳遞依賴關係?我可以添加兩種依賴關係,但是我覺得必須有一種方法可以在一個依賴關係定義中完成。

回答

1

archives配置包含要上載的工件,但它不包含任何依賴關係。試試這個:

dependencies { 
    runtime ... 
} 

artifacts { 
    runtime zipDistribution // assuming this is a `Zip` task 
} 

dependencies { 
    compile project(':someProject') 
} 

代替了Java插件的runtime配置,前者腳本還可以依賴和文物添加到自定義配置,那麼這將在該項目中的依賴要體現(project(path: ..., configuration: ...))。