Displaying warn
level messages for file collisions
#126
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We experienced problems in a recent project where Java property files were being left out due to collisions with other JARs in the project. In the course of debugging the issue, we tried the OneJar Gradle plugin which printed debug messages about these collisions. This PR adds the same functionality to the Shadow plugin.
With warnings about file collisions, it's trivial to add appropriate appending transformers to the Gradle task for the shadow JAR. One interesting thing we noticed with this was frequent collisions on
META-INF/LICENSE
, which has possibly interesting ramifications for some projects, e.g. anything that includes an Affero GPL license.It was necessary to modify the
visitedFiles
data structure to allow storing the source JAR and file size without ripping through JAR files again. We provided several overloaded methods to allow insertion intovisitedFiles
.