Tener dist en el control de la fuente puede considerarse una buena práctica si desea que su sistema de control de origen sea un único referente para todos:
- desarrolladores
- ensambladores (pruebas unitarias)
- probadores de homologación (consulta un montón de dist en su plataforma de integración y realiza sus pruebas de no regresión, pruebas de perfs, pruebas de estrés, etc.)
- directores de lanzamiento de producción ...
PERO necesita tener un proceso de liberación adecuado para llevar esto a cabo.
En su caso, la construcción debe estar en un directorio separado y privado , que es un directorio que no está en subversión. Cuando la compilación está bien, la importa a subversión si es una versión oficial , o la importa a un directorio compartido si se trata de una compilación temporal, que el próximo equipo necesita (evitando así comprometer cientos de compilaciones en SCM, usando espacio por nada).
Nota: la principal ventaja de tener la entrega (dist) en su SCM es permitir que el proyecto dependiente funcione no con sus fuentes, sino directamente con su entrega (que en algún momento irá a la producción): si se las arreglan para hacer que su código funcione, al compilar con su entrega, es probable que su propio dist, cuando se implemente con su, funcione.
De esta forma, los otros equipos acceden a su entrega (su 'myProject.jar') a medida que acceden a cualquiera de sus fuentes: pueden leer a través del SCM la versión de su jar, su fecha, su historia, sus metadatos, su etiqueta y pronto.
Sin embargo, para un pequeño proyecto monolítico (como en 'ningún otro proyecto depende de él'), se puede argumentar que dist (la entrega final empaquetada) podría reconstruirse a pedido y almacenarse en un sistema referencial externo , como un externo Repositorio Maven, por ejemplo.
PERO: Maven no es un repositorio de SCM, lo que significa que debes firmar tu jar ('MyProject-1.0.jar'), no tienes historial y debes informar todos tus metadatos en un archivo de texto separado a lo largo de tu entrega. Cualquier otro proyecto que acceda a esa entrega en ese repositorio de Maven debe ajustar sus scripts y classpaths de acuerdo con la convención de nomenclatura de su versión.
Además, Maven es otro repositorio en su arquitectura de desarrollo. Siempre que pueda mantener el número de repos a un mínimo (de '1';)), es mejor.