Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Numerous extension components share a small number of similar libraries. With selective version management in the root Maven configuration, these common dependencies have the same version when bundled into various NAR files. The current packaging structure has most extension NAR files depending on nifi-standard-services-api-nar, which is scoped to common service API modules that do not have additional dependencies.
Introducing a new intermediate NAR to package common versions of several shared dependencies would provide a notable size reduction for binary builds. A new standard shared NAR should contain a limited set a dependencies that are broadly applicable to extension components, which will allow these components to set shared dependencies with the provided scope, avoiding direct inclusion in the extension NAR.
The standard shared NAR should depend on nifi-standard-services-api-nar, allowing components to opt out of the standard shared dependency version if absolutely necessary.
The following libraries are good candidates for inclusion in a standard shared NAR based on the number of references and the sizes of the dependencies:
- Apache Commons libraries such as commons-lang3 and commons-io
- Jackson JSON
- Bouncy Castle
- Netty 4
- OkHttp with Kotlin
Attachments
Issue Links
- causes
-
NIFI-12279 Add Standard Shared NAR to System Test Modules
- Resolved
-
NIFI-12996 nifi-shared-bom construct broke classloading for optional dependencies of common-compress including zstd
- Resolved
- links to