¿Cómo puedo organizar la base de código de mi proyecto que se dirige a múltiples versiones de la biblioteca?

Estoy escribiendo una pequeña biblioteca L1 que depende de una biblioteca de terceros L2 . L2 tiene múltiples versiones que L1 necesita para ser compatible. Cada versión de L2 está vinculada a una API específica dada y a un JDK objective. No tengo control sobre L2 .

Por ejemplo :

  • L2-v1.x -> Necesito poder proporcionar L1-v1.x
  • L2-v2.x -> Necesito poder proporcionar L1-v2.x
  • L2-v3.x -> Necesito poder proporcionar L1-v3.x

¿Cuál sería la mejor manera de organizar el código en git (qué debería poner en master / which branches / should have multiple projects / multiple modules) sabiendo que tengo que build el proyecto usando Maven y quiero que la construcción sea tan simple? como sea posible ?

Gracias de antemano.

Editar: todas las versiones de L2 están en Maven Central, todas las versiones de L1 tendrán que estar en Central.

Si esas fonts de la biblioteca no están en un repository maven, entonces puede seguir " Uso de submodules de Git para artefactos de Maven no en Central ".
Los submodules de Git son ideales para vincular una versión de previsión de un repository a otro.

Aquí hay una versión adaptada a su configuration:

  1. Configuraste tu proyecto Maven para tener un pom padre y tu propio proyecto L1 como un module Maven de ese proyecto.

  2. Usted importa el proyecto que desea en su proyecto. Por ejemplo, el proyecto L2 en la label correcta .

 git submodule add /url/to/L2.git cd L2 git checkout <L2-vy.x> cd .. git add . git commit -m "Add submodule L2 at <L2-vy.x>" git push 

El command del git submodule ahora tendrá un repository L2 clonado en una carpeta llamada L2.
Git habrá agregado un file .gitmodule que se ve así:

submodule ["L2"] ruta = L2 url = /url/to/L2.git

Su estructura de directorys debería verse así

 yourParentProject - pom.xml - .git - .gitmodule - L1 \- pom.xml - L2 \- pom.xml 
  1. En tu padre pom.xml, agregas la carpeta L2 como un module.
 <modules> <module>L1</module> <module>L2</module> </modules> 

Y en su proyecto L1, agrega L2 como una dependencia:

 <groupId>com.github.user.L2</groupId> <artifactId>L2</artifactId> <version>L2-vy.x</version> 
  1. Ahora todo está configurado. Si llama a mvm test en el proyecto principal, verá que primero crea L2 y luego su proyecto L1.

Usándolo

Cuando otros desarrolladores clonan su proyecto, necesitan instalar el module también usando el command git:

 git submodule update --init