Skip to content

Dependency Housekeeping and how developers will benefit from it #5288

@poikilotherm

Description

@poikilotherm

This issue is a story from or a blocker to #5292.
This issue is related to #4260, #5274, #3921, #4172 and more.
Please feel addressed @matthew-a-dunlap and @scolapasta 😉

While working on #4172 I discovered the problems noted down in #5274, which are in turn a left-over of #3921. This lead me to the impression, that the current pom.xml could use some love in terms of dependency management, hopefully avoiding more problems down the road. More and more deps keep kicking in while functionality is added to Dataverse. (As @pdurbin said on IRC: Dataverse 4.0 was around 45MB, 4.9.4 is at 146 MB)

I made some first steps primarily to address #5274, but this might be a could starting point for more work in this. Reducing WAR size, find wrong imports, update dependencies, address convergence issues and more...

Done so far (mostly for the resolution of #5274)

  • Add initial dependency management for this via BOMs
  • Add direct dependencies to Jackson as it is in use within the code.
  • Remove JaCoCo compile scope dependency and fix resulting import errors from transitive deps not present anymore.
  • Add checksums to the local_lib JARs to make Maven happier
  • Write usefull docs (and rules?) about dependency management for old and new Dataverse developers (placed in a new section within the dev docs)

Things open (and will stay open till we are on Glassfish 5+, see #5274)

Things to consider

  • Think and talk about moving local_lib into a GitHub based "poor mans" Maven repo.
  • Cleanup direct and transitive deps for the SWORDv2 code
  • Think and talk about adding Maven Enforcer as a plugin permanently, maybe add it to the build cycle and fail builds on convergence issues.
  • Address more/all conflicts from mvn enforcer:enforce
  • Address issues from mvn dependency:analyze
  • Think about replacing the retired Apache Abdera library with sth. like ROME - Note: ROME is used by Tika and included anyway.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions