2011-01-14 115 views
0

也許我錯過了關於Gradle的工作方式。我在這裏有一個父項目,它只包含配置,即在構建它時不會構建任何工件,它只是管理和構建其所有子項目。Gradle無法使用fileTree注入依賴到子項目

現在子項目分享一些依賴的配置,所以我想我會做什麼在根項目的build.gradle是:

subprojects { 
    dependencies { 
    compile fileTree(dir: 'lib', includes: ['*.jar']) 
    }  
} 

然而,這是不行的,它失敗了,而令人費解的錯誤消息:

的問題發生評估根 項目「qype-Android的原因:法無 簽名: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile() 適用於參數類型: (org.gradle.api.internal.file.DefaultConfigurableFileTree) 值:[文件中設置 'LIB']可能的解決方案 :模塊(java.lang.Object中)

後一些試驗和錯誤,我可以通過將'java'插件應用到父項目來「修復」這個問題。

怎麼回事?我從Gradle文檔中看不到任何依賴於fileTree的Java插件。即便如此,爲什麼我需要它在注入配置的項目上,而不是在正在配置的項目上(請注意,子項目都自己使用Java插件)?

這是否意味着,如果我有N個不同的子項目是所有不同性質的,並適用不同的插件,父項目必須始終運用一套地方用於自身,也都插件衆生?

回答

2

這不是需要'java'插件的fileTree

錯誤消息抱怨未定義的compile依賴項配置。 Java插件爲您定義了此配置,以便您可以向其添加依賴項(包括您的fileTree)。

+0

我明白了 - 謝謝。但是,我仍然覺得很尷尬,我必須將Java插件應用到父項目,當它不是Java項目時... – Matthias 2011-01-14 14:27:22