jenkinsci / apache-httpcomponents-client-5-api-plugin

Bundles Apache HttpComponents Client 5.x and allows it to be used by Jenkins plugins.
https://plugins.jenkins.io/apache-httpcomponents-client-5-api
MIT License
1 stars 2 forks source link
apache apache-httpclient apache-httpcomponents build http-client jenkins jenkins-library jenkins-plugin jenkins-security-scan-enabled library plugin

[[apache-httpcomponents-client-5-api-plugin]] = Apache HttpComponents Client 5.x API Plugin for Jenkins :toc: macro :toclevels: 3 :toc-title:

image:https://ci.jenkins.io/job/Plugins/job/apache-httpcomponents-client-5-api-plugin/job/main/badge/icon[link="https://ci.jenkins.io/job/Plugins/job/apache-httpcomponents-client-5-api-plugin/job/main/"] image:https://github.com/jenkinsci/apache-httpcomponents-client-5-api-plugin/actions/workflows/jenkins-security-scan.yml/badge.svg[link="https://github.com/jenkinsci/apache-httpcomponents-client-5-api-plugin/actions/workflows/jenkins-security-scan.yml"]

image:https://img.shields.io/jenkins/plugin/i/apache-httpcomponents-client-5-api.svg?color=blue&label=installations[link="https://stats.jenkins.io/pluginversions/apache-httpcomponents-client-5-api.html"] image:https://img.shields.io/github/contributors/jenkinsci/apache-httpcomponents-client-5-api-plugin.svg?color=blue[link="https://github.com/jenkinsci/apache-httpcomponents-client-5-api-plugin/graphs/contributors"] image:https://img.shields.io/github/release/jenkinsci/apache-httpcomponents-client-5-api-plugin.svg?label=changelog[link="https://github.com/jenkinsci/apache-httpcomponents-client-5-api-plugin/releases/latest"]

This plugin bundles all the components of https://hc.apache.org[Apache HttpComponents Client 5.x] except httpclient5-win because of the dependency on jna.

These components can be used by other plugins as a dependency. It allows managing library updates independently of plugins.

== How to introduce to your plugin

=== Plugins directly depending on httpclient5

Replace the dependency to org.apache.httpcomponents.client5:httpclient5 with the dependency to apache-httpcomponents-client-5-api.

Avoid version conflicts by using the https://github.com/jenkinsci/bom[Jenkins Plugin BOM] rather than depending on a specific version.

Before:

[source,xml]

... org.apache.httpcomponents.client5 httpclient5 5.2.1 ...

After:

[source,xml]

... io.jenkins.plugins apache-httpcomponents-client-5-api ...

=== Plugins using libraries depending on httpclient5

Add the dependency to apache-httpcomponents-client-5-api before any of dependencies to those libraries to force maven to use httpclient5 declared by apache-httpcomponents-client-5-api.

Avoid version conflicts by using the https://github.com/jenkinsci/bom[Jenkins Plugin BOM] rather than depending on a specific version.

Before:

[source,xml]

... somelibrary-using-httpclient5 1.0.0 anotherlibrary-using-httpclient5 1.0.0 ...

After:

[source,xml]

... io.jenkins.plugins apache-httpcomponents-client-5-api somelibrary-using-httpclient5 1.0.0 anotherlibrary-using-httpclient5 1.0.0 ...

== Versioning

Version follows the pattern of <org.apache.httpcomponents.client5 version>-<plugin version>. This way it is clear what upstream dependency is offered and allows patch releases for the plugin itself if required.

Since org.apache.httpcomponents.client5 artifacts have a release cycle that is independent from org.apache.httpcomponents.core5 artifacts, the latter are included in patch releases for this plugin.

== Release Notes

Release notes are recorded in https://github.com/jenkinsci/apache-httpcomponents-client-5-api-plugin/releases[GitHub Releases].

== License