2014-03-02 24 views
0

以下是我正在使用的最小build.gradle文件。在gradle build的installApp階段對每個文件執行操作

apply plugin: 'application' 

installApp { 
    eachFile { 
    println "$it.name" 
    loadProperties(it) 
    } 
} 

我想要的屬性加載到屬性文件位於src/dist/bin一些佔位符。如果屬性文件在src/main/resources中,並且我將installApp替換爲processResources,則此技術可以正常工作,這是我在構建中的另一個項目中執行的操作。

println沒有打印任何內容,因此佔位符沒有被替換,但我不明白爲什麼它不會遍歷installApp任務正在複製的所有文件。

使用gradle 1.10作爲./gradlew clean installApp運行。

看來installApp任務不會運行傳遞給eachFile函數的閉包。下面是一個說明這種行爲

apply plugin: "application" 

mainClassName = "test.Test" 

installApp { 
    eachFile { 
    println "$it.name" 
    } 
} 

我跑gradle clean installApp -i

和周圍的installApp部分得到

:installApp (Thread[main,5,main]) started. 
:installApp 
Executing task ':installApp' (up-to-date check took 0.011 secs) due to: 
    Output file /Users/joshbrackett/Documents/workspace/gtest/build/install/gtest has changed. 
    Output file /Users/joshbrackett/Documents/workspace/gtest/build/install/gtest/bin/gtest has been removed. 
    Output file /Users/joshbrackett/Documents/workspace/gtest/build/install/gtest/lib/gtest.jar has been removed. 
:installApp (Thread[main,5,main]) completed. Took 0.748 secs. 
+0

如果不打印任何內容,則可能是沒有安裝任何文件。也許這個任務已經是'最新日期'了。 –

+0

@PeterNiederwieser - 我已經更新了我的問題,包括我正在做一個乾淨的。我甚至手動刪除了安裝目錄以確保文件(啓動腳本/ propery文件)正在移動,但屬性文件仍然有佔位符。 – Josh

+0

我真的不知道你是如何嘗試做替代。無論如何,如果'println'沒有生效,我唯一合乎邏輯的結論就是什麼都沒有得到同步。 –

回答

1

我已經複製您的問題完整的build.gradle文件。我懷疑這是一個錯誤。在我們進一步調查的時候,這裏有一個解決方法可以幫助我。

使您的eachFile呼籲applicationDistribution copySpec而不是installApp任務。

applicationDistribution.eachFile { 
    println "$it.name" 
} 

我懷疑這就是你想要做的事情,因爲那樣它也會被dist任務使用。

順便說一句,你也可能會發現expand方法感興趣http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/CopySpec.html#expand(java.util.Map)

0

這在搖籃2.3似乎又變了。現在使用applicationDistribution不起作用,您需要使用installDist

相關問題