这是我正在使用的最小build.gradle文件。
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函数的闭包。这是一个完整的build.gradle文件,用于演示此行为
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 :(得分:1)
我已经复制了你的问题。我怀疑这是一个错误。在我们进一步调查的同时,这是一个对我有用的解决方法。
对eachFile
copySpec而不是applicationDistribution
任务进行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)
答案 1 :(得分:1)
这显然在Gradle 2.3中再次发生了变化。现在使用applicationDistribution
无效,您需要使用installDist
。