¿Cómo sustituir una dependencia de Maven de un proyecto por su fork en GitHub?

Tengo un proyecto de Maven en Eclipse que usa una dependencia de GitHub y comstack y funciona bien. Sin embargo, necesito hacer algunos cambios a la dependencia al time que retiene el acceso al rest de su funcionalidad. La solución obvia es bifurcarlo y sustituir el nuevo proyecto bifurcado por la antigua dependencia. Llegué a bifurcarlo en mi propia count, pero siendo nuevo en Maven, no estoy seguro de qué hacer exactamente a continuación.

Hay dos references a eso en el pom, pero ¿qué hay de las importaciones, y tal vez algunas otras references que aún no conozco? Además, el buscador de dependencies parece no poder encontrar el nuevo tenedor. Me temo que podría cambiar algo involuntariamente, ensuciar el proyecto y prepararme para arreglar los errores de forma manual durante horas y horas.

¿Cuál es la forma correcta de eliminar la antigua dependencia y poner la nueva exactamente en su lugar?

  1. Después de haber bifurcado la dependencia, descargue una copy local a su estación de trabajo.

  2. En esa copy, puede modificar las coorderadas de Maven (ID de artefacto y / o la versión) de esta dependencia. Luego haz tus cambios.

  3. perfom mvn clean install . Esto colocará la dependencia modificada en su repository Maven local (en su máquina).

  4. En el pom.xml del proyecto que hace reference a la dependencia alterada, adapte las nuevas coorderadas.

  5. como @lexicore escribió:

Si usa diferente groupId / artifactId (que sería más limpio), es posible que también deba excluir la dependencia original de otras dependencies. Verifique la dependencia de mvn: tree para las dependencies a las que debe agregar exclusiones.

  1. ahora su propio proyecto usará la dependencia modificada.

¿Cuál es la forma correcta de eliminar la antigua dependencia y poner la nueva exactamente en su lugar?

Ninguna.

Same Maven coordina === misma dependencia. Período. Si quiere modificar algo (como lo hace), use diferentes coorderadas de Maven ( groupId / artifactId / version ). Si quiere cambiar algo pero aún usa las coorderadas anteriores, obtendrá todo tipo de problemas. ¿Cómo podrían las construcciones conocer las dependencies que deben usar?

La manera más fácil es, probablemente, simplemente cambiar la versión a alguna versión superior e include la dependencia bifurcada explícitamente. Por lo tanto, la dependencia directamente incluida sobrescribirá otras versiones en el gráfico de dependencia.

Si usa diferente groupId / artifactId (que sería más limpio), es posible que también deba excluir la dependencia original de otras dependencies. Verifique la mvn dependency:tree para las dependencies a las que debe agregar exclusions .

Además, si solo aplica un parche a algún código, cambia las coorderadas de Maven y crea su dependencia bifurcada, el resultado debería tener un pom.xml correcto para que las dependencies transitivas también funcionen. Si el código original cambia, tendrá que cambiar la base de sus cambios además de eso. No estoy seguro si es viable a largo ploop, es posible que desee contribuir con su parche al proyecto original o solicitar una característica que la parte que ha personalizado es OOTB personalizable.