On 29/09/2011, at 5:27 PM, Carlton Brown wrote:
> I'll make this correction on the list so others can see it... but there are 2
> issues with this retrieve code... first, when defining the regexp, Groovy
> seems to choke on the backslash of the \w string.. I had to use the tilde
> constructor to make it work. Also the regexp was too naive to cover all
> the dependency variations that exist in the wild. Here's what I got to work:
>
> task retrieve(type: Copy) {
> libsDir = "libs-gradle/compile"
> delete libsDir
> from configurations.compile
> into libsDir
> rename ~/^([a-z0-9-_]+[a-z0-9])-[0-9]+\..+\.(.+)$/, '$1.$2'
> eachFile {
> println "retrieved: $it.name"
> }
> }
>
> The above code will simplify every naming convention I know of, but it does
> not account for retrieval conflicts. For example, Ivy would display a
> warning if 2 different jars were simplified to the same name.
Instead of using the delete, you should turn this into a sync task:
task retrieve(type: Sync) {
libsDir = "libs-gradle/compile"
from configurations.compile
into libsDir
rename ~/^([a-z0-9-_]+[a-z0-9])-[0-9]+\..+\.(.+)$/, '$1.$2'
eachFile {
println "retrieved: $it.name"
}
}
Sync makes the destination dir exactly match the source, so will remove any old
files.
--
Luke Daley
Principal Engineer, Gradleware
http://gradleware.com