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:
Configuraste tu proyecto Maven para tener un pom padre y tu propio proyecto
L1
como un module Maven de ese proyecto.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
- 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>
- 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