Supongamos que tengo un proyecto de código abierto que depende de alguna biblioteca, que debe ser parcheado para solucionar algunos problemas. ¿Cómo puedo hacer eso? Mis ideas son:Un diseño para un proyecto maven con una dependencia parcheada
- Haga que las fuentes de la biblioteca se configuren como un módulo, guárdelas en mi vcs. Pros: simple. Contras: algunas fuentes de terceros en mi repositorio pueden ralentizar el proceso de compilación, es difícil encontrar un parche (aunque se puede solucionar en README)
- Tiene un módulo, como en 1, pero solo mantiene los archivos fuente parcheados, compílelos con el contenedor de la biblioteca orignal en classpath y de alguna manera reemplazar los archivos * .class en el archivo jar de la biblioteca en la compilación. Pros: crea sitios parcheados más rápidos y fáciles de encontrar. Contras: difícil de configurar, el hacker de jar no es obvio (el jar de la biblioteca en el repositorio y en mi proyecto sería diferente)
- Mantenga los archivos * .class parcheados en main/resources, y reemplace en el paquete como en 2). Pros: casi ninguno. Contras: binarios en vcs, difícil de recompilar una clase parche ya que la compilación de parches no está automatizada.
Una buena solución es crear un proyecto distinto con fuentes de biblioteca parcheadas, y desplegarlo en el repositorio local/empresarial con el calificador -patched. Pero eso no encajaría para un proyecto de fuente abierta que sea fácil de construir para cualquiera que controle sus fuentes. O debería simplemente decir "y también, antes de construir mi proyecto, por favor revise esas cosas y ejecute mvn install".
+1 Bonitas notas adicionales –