¿Cuál es el propósito de la propiedad del clasificador de declaraciones de dependencia de Mavens?

Tengo un archivo pom.xml y veo que son 3 dependencias a las que se hace referencia para el mismo la diferencia está en las tags

 sources javadoc 

He eliminado las dependencias que tenían las SOURCES/JAVADOC y solo mantuve una dependencia. Probé mi aplicación y todo funciona bien.

¿Cuál es el propósito de usar esta etiqueta clasificador? y por qué necesito duplicar las dependencias dos veces para agregar la etiqueta con SOURCES/JAVADOC .

  oauth.signpost signpost-commonshttp4 1.2.1.2 jar compile   oauth.signpost signpost-commonshttp4 1.2.1.2 jar ***javadoc*** compile   oauth.signpost signpost-commonshttp4 1.2.1.2 jar ***sources*** compile  

El clasificador permite distinguir artefactos que fueron construidos desde el mismo POM pero difieren en su contenido. Es una cadena opcional y arbitraria que, si está presente, se agrega al nombre del artefacto justo después del número de versión.

para más detalles, consulte http://maven.apache.org/pom.html

Ejemplo para clasificador
Como motivación para este elemento, considere, por ejemplo, un proyecto que ofrece un artefacto dirigido a JRE 1.8 pero, al mismo tiempo, también un artefacto que aún admite JRE 1.7. El primer artefacto podría estar equipado con el clasificador jdk18 y el segundo con jdk14 para que los clientes puedan elegir cuál utilizar.

Otro caso de uso común para los clasificadores es la necesidad de adjuntar artefactos secundarios al artefacto principal del proyecto. Si navega por el repository central de Maven, notará que los orígenes de los clasificadores y javadoc se utilizan para implementar el código fuente del proyecto y los documentos API junto con los archivos de clase empaquetados.

Permite distinguir dos artefactos que pertenecen al mismo POM pero se construyeron de manera diferente y se anexan al nombre del archivo después de la versión.

Por ejemplo, si tiene otros artefactos en su repository (documentos, fonts …) puede hacer referencia a ellos y agregarlos a su proyecto como dependencia. en este código al agregar los sources obtenemos el archivo sources.jar del repository.

   oauth.signpost signpost-commonshttp4 1.2.1.2 jar ***sources*** compile  

en realidad Le permite ubicar sus dependencias con un mayor nivel de granularidad.

De acuerdo con lo siguiente: https://blog.packagecloud.io/eng/2017/03/09/how-does-a-maven-repository-work/ tag de clasificador ha implicado “artefacto secundario”, que es su “dependencia transitiva” será cortado! ¡Así la etiqueta del clasificador no solo cambia “Maven Coordinate” por $ artifactId- $ version- $ clasificador.jar!

Otra respuesta más pragmática con un ejemplo para ayudar a comprender mejor la utilidad del classifier .

Supongamos que necesita dos versiones de un artefacto: para openjpa y para eclipselink , digamos porque jar contiene entidades que se necesitan para mejorar la implementación de JPA específicamente.

Es posible que tenga un manejo diferente para estas comstackciones definidas en los perfiles de Maven y los perfiles utilizados entonces también tienen la propiedad .

Para construir las versiones clasificadas de forma diferente, en pom el maven-jar-plugin se configuraría a continuación

  org.apache.maven.plugins maven-jar-plugin 3.0.2  ${classifier}   

La instalación de ambos daría como resultado que los archivos en reposen algo como esto:

org / example / data / 1.0.0 / data-1.0.0.pom
org / example / data / 1.0.0 / data-1.0.0-openjpa.jar
org / example / data / 1.0.0 / data-1.0.0-eclipselink.jar

Ahora solo sería cuestión de classifier a cuál usar, entonces

  org.example data 1.0.0 [openjpa|eclipselink]  
    Intereting Posts