Status: Closed (View Workflow)
stapler-jelly currently depends on a patched version¹ of dom4j, the original of which was released thirteen years ago. Current releases support Java 8, etc.
diff --git a/jelly/pom.xml b/jelly/pom.xml index 8aa4ec8d7..725f2ba56 100644 --- a/jelly/pom.xml +++ b/jelly/pom.xml @@ -32,9 +32,9 @@ <artifactId>commons-collections</artifactId> </dependency> <dependency> - <groupId>org.jenkins-ci.dom4j</groupId> + <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> - <version>1.6.1-jenkins-4</version> + <version>2.1.1</version> </dependency> <dependency><!-- only needed for annotations, hence optional --> <groupId>org.jvnet.maven-jellydoc-plugin</groupId>
does not work because of an API added to HtmlWriter used by Stapler's HTMLWriterOutput.
To be done:
- Write a unit test for HTMLWriterOutput demonstrating whatever it is supposed to do.
- Replace the missing setEnabled call. Perhaps just use Proxy to make a ContentHandler that dynamically switches between XMLWriter and HTMLWriter. That obviates the need for this patch. Close this PR accordingly.
- File an upstream PR for the static keyword addition from that patch.
- Update to 2.1.1 or newer. PR should link to this.
- File an upstream PR for this minor-looking improvement.
- Determine if this patch is even useful. If so, it can be done via the official getOmitElementCloseSet + setOmitElementCloseSet API.
- Forget about this patch since
JENKINS-13709is just one of many evil consequences of using maven-plugin.
JENKINS-46616which I think is not an issue in current library releases.
danielbeck is there some epic or label for issues proposing to switch from forked to official versions of libraries in Jenkins?
¹Using a different GA, no less. Noticed here: causes mayhem for plugins depending on the database plugin.
- relates to
JENKINS-13709 ClassCast Exception when parsing JUnit surefire reports during website generation
JENKINS-46616 [JDK9] Illegal reflective access from dom4j
I've been working on this one for a while, compiling different libraries and plugins and running tests and checks. The specific tasks or conclusions I've found are a little different from those originally reported, but the overview remains the same. The forked dom4j version we use is ancient and really isn't necessary. We can get rid of it with a relatively few, independent tweaks. That will get us on a better footing.
I'll start pushing a few PRs to various components to prepare them. Once we actually make the switch there are a few other places we can clean up.
PR in Stapler to change to standard dom4j: https://github.com/stapler/stapler/pull/164
Enablement PR in Jenkins to old or new to work fine: https://github.com/jenkinsci/jenkins/pull/4089
ec2-plugin PR to enable old or new to work fine: https://github.com/jenkinsci/ec2-plugin/pull/372 (Already merged)
Additional PRs to come later to include the new versions.
Stapler version 1.258 was released on 19 August 2019 containing changes to move to the standard dom4j library.
Jenkins PR https://github.com/jenkinsci/jenkins/pull/4130 depends upon that version and removes dependency on the forked library. This PR is up for review.
No such previous effort I'm aware of.