[GRADLE-1566] Copy filtering/expansion needs to be more selective on what content is filtered to avoid corrupting binary files Created: 22/May/11 Updated: 18/Nov/13 Resolved: 18/Nov/13 |
|
Status: | Resolved |
Project: | Gradle |
Affects Version/s: | 1.0-milestone-3 |
Fix Version/s: | 1.7-rc-1 |
Type: | Improvement | ||
Reporter: | Luke Daley | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 15 |
Description |
I have found the filtering and expansion of the war task (and subsequently all copy tasks) to be problematic due to every file being attempted to be read as a text file with a certain encoding. This means that when binary files are read, they are written back out incorrectly. I have had related problems with the expand() tool and binary files that contain characters that it can't parse. A potential solution would be to all of the filter/expand operation to operate on a subset of what is being copied. |
Comments |
Comment by Luke Daley [ 22/May/11 ] |
Last paragraph should be: “A potential solution would be to have the filter/expand operation(s) operate on a subset of what is being copied. |
Comment by Luke Daley [ 19/Sep/11 ] |
Question raised in forums: http://forums.gradle.org/gradle/topics/whats_a_safe_i_e_cross_platform_way_to_replace_tokens_in_processresources |
Comment by Merlyn Albery-Speyer [ 19/Sep/11 ] |
The work-around I'm using for my pain-point is: processResources { from(sourceSets.main.resources.srcDirs) { exclude '**/*.properties' }} Note that I'm only seeing corruption of binary files in Linux. None on OSX. |
Comment by Chuck May [ 28/May/13 ] |
We just ran across this issue and was surprised to find it was reported in 1.0-milestone-3 and still exists 2 years later in 1.6. I see that there is a workaround, but are there any plans on fixing the bug? If not, this issue should just be closed. |
Comment by Jeff Nadler [ 05/Jun/13 ] |
+1 filtering should not corrupt binary files |
Comment by Adam Murdoch [ 11/Nov/13 ] |
Can we close this now that we have filesMatching() and filesNotMatching()? |
Comment by MikeN [ 17/Nov/13 ] |
I think so, the following seems to work fine: processResources { inputs.property('version', version) filesMatching("**/version.properties") { expand version: version } } |