2014-05-06 103 views
0

我有以下相當簡單build.gradle構建腳本:爲什麼我的依賴打印兩次?

repositories { 
    mavenCentral() 
} 

configurations { libs } 

dependencies { 
    libs 'org.hibernate:hibernate-core:4.3.5.Final' 
} 

configurations.libs.files { println it } 

當我與gradlew build運行它(我使用搖籃1.12,最新的時刻)我得到以下幾點:

DefaultExternalModuleDependency{group='org.hibernate', name='hibernate-core', version='4.3.5.Final', configuration='default'} 
DefaultExternalModuleDependency{group='org.hibernate', name='hibernate-core', version='4.3.5.Final', configuration='default'} 

這些似乎是相同的依賴關係,但我不明白爲什麼當我添加一個時它們中有2個。

有誰知道爲什麼?我做錯了什麼?還是有什麼我不明白的?

回答

1

該方法預計謂詞。 (有關API的詳細信息,請參閱Gradle Build Language Reference中的Configuration。)如果您傳遞包含println聲明的封閉,則(看起來)會發生奇怪的事情。你可能想要類似下面的東西:

// configurations should only be resolved in 
// the execution phase, so let's declare a task 
task printLibs { 
    doLast { 
     configurations.libs.each { println it } 
    } 
} 
+0

好的,這是我做錯了一部分:應該叫'each'。那2個依賴關係呢?即使'文件'得到一個謂詞,爲什麼它適用於2個依賴關係(看起來是相同的)?爲什麼兩個,當我只有一個? –

+0

這兩者之間有什麼區別,因爲我看到印刷的內容是相同的...... –

+0

它們不能相同。使用'each',文件路徑而不是依賴項對象將被打印,我懷疑你會得到兩條路徑。 –