Avoid Logstash's classes in plugin's uber jar due to shading #15
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.
Release notes
[rn:skip]
What does this PR do?
Fixes the plugin to avoid to pack also the classes of Logstash and log4j.
The example plugin originally used to create a shadow jar with all the dependencies merged into. The dependencies that ends into are also the Logstash classes and the log4j one, which are already provided by the Logstash project itself. This could lead to classpath trashing.
This PR avoid to use shadow the dependencies and leverage the fact that the gem could pack also the jars.
Furthermore adds a MANIFEST, in the plugin's main jar, to mark it as entry point to be recognized by Logstash. This PR to properly works needs a Logstash version with the elastic/logstash#13979.
Why is it important/What is the impact to the user?
Checklist
[ ] I have made corresponding changes to the documentation[ ] I have made corresponding change to the default configuration files (and/or docker env variables)[ ] I have added tests that prove my fix is effective or that my feature worksAuthor's Checklist
How to test this PR locally
LOGSTASH_CORE_PATH
property in./gradle.properties
./gradlew test
and build the gem file./gradlew gem
Related issues
Use cases
Screenshots
Logs