2014-02-22 65 views
1
父配置

我添加了一個自定義的配置,我的插件設置,生活的編譯配置的搖籃

Configuration customCompile = project.configurations.create("customCompile") 
     .setVisible(false).setTransitive(true) 

我要像做

configuration.compile.addExtendsFrom(customCompile) 

所以,在我的插件,我可以將某些依賴關係添加到我正在運行的某個類路徑中(使用`project.configurations.customCompile)。我希望他們仍然在常規編譯路徑上。

我所做的是這樣的:

Configuration compile = project.configurations.getByName('compile') 
Set updated = WrapUtil.asSet(compile.getExtendsFrom()) // returns a immutable set 
updated.add(customCompile) 
compile.setExtendsFrom(updated) 

它的工作原理,但感覺有點令人費解,extendsFrom似乎已經是我已經習慣了與Java類繼承的相反的意思。有沒有更好的方法來做到這一點?

回答

2

a.extendsFrom(b)模擬 「從B A繼承」,你可以簡單地做configurations.compile.extendsFrom(customCompile)。 (不是addExtendsFromgetExtendsFrom。)

+0

我認爲這感覺就像繼承的對立面是因爲我認爲「instanceof」會起作用。如果a.extendsfrom(b),我期望project.configurations.a是一個子類「a」的列表,project.configurations.b包含b和a。無論如何,我想這是一種主觀的解釋。這對我有用。 – loosebazooka

+0

你的解釋與繼承是相反的。 :-) extendsFrom實際上類似於(多重)繼承。 –

+0

我的意思是在類型'B'的列表可以引用(類型A和B)與類型'A'(類型A)的列表的上下文的上下文中,但是這似乎具有所有B類型依賴關係是B的成員(不是B的實例),這是合理的。 – loosebazooka