Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

As a large project with many external integrations, Apache NiFi depends on hundreds of libraries, each with various transitive dependencies. Runtime ClassLoader isolation allows different extension components to depend on different versions of the same library, which brings both flexibility and complexity to the dependency management process. Knowing the scope of library usage is important when evaluating whether to upgrade, enforce, or override dependency versions.

Project Modules

The location of subproject module hierarchies should be noted when evaluating dependency changes.

Managed Dependencies

The Apache Maven dependencyManagement element enables parent projects to set dependency versions for child projects. Custom project properties enable a single version to be set and referenced. Many libraries include a shared set of transitive or sibling dependencies, which can be managed through a single Bill of Materials dependency. Selective use of these features provides a consistent and maintainable strategy.

...

In some instances, there is no substitute for exercising components with a running configuration. Understanding the scope of dependency usage will can help tailor particular functional tests, identifying whether specific properties are necessary to exercise new features or fixes.