Split of artifact-manager-jclouds plugin #83
Closed
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.
Split the generic parts of this plugin into https://github.com/jglick/artifact-manager-jclouds-plugin. While
JenkinsRule-based tests pass, it does not work in an actual Jenkins server due to class loading conflicts.artifact-manager-jcloudsmust useMask-Classesso it can load its own copy of Guava compatible with jclouds, rather than the ancient copy bundled in Jenkins core. But thenartifact-manager-s3is stuck: if it also masks the same classes, it will not agree on Guava types being used to communicate between the two (identical bytecode would be loaded twice); if it does not, then it picks up the old copy from core, which does not work.Plugin-First-ClassLoaderwould not help here.Global-Mask-Classesprobably would—this would allowartifact-manager-jcloudsto ignore core’s version, andartifact-manager-s3to also ignore core’s version but inherit fromartifact-manager-jclouds—but this would be extremely risky, as it would mean that any plugin in Jenkins attempting to refer to Guava would fail. The Jenkins plugin metadata simply offers no way to express that some classes should be masked only from core but not from plugin dependencies. So the only apparent ways forward would be: