En cuanto empiezas a dividir un gran proyecto en proyectos más pequeños, encuentras un montón de seguimiento de la dependencia que generalmente no tienes que considerar. Puede hacerlo usted mismo o puede usar un software que ya maneje muchos de los problemas centrales.
I would recommend Apache's Ivy. Se integra bien con Apache's Ant, y tiene un archivo de configuración separado (que se controla) para rastrear lo que se requiere para cada tipo de compilación.
Apache's Maven es otra buena opción; sin embargo, hace mucho más que Apache's Ivy. Algunas veces ese "mucho más" significa que haces menos de lo que hubieras hecho de todos modos, a veces eso "mucho más" significa que estás haciendo (y configurando) cosas que no has hecho antes. Dependiendo del ajuste de su práctica a Maven, la migración a Maven podría ser fácil o muy difícil.
Además, utilizando Ivy, puede configurar su propio repositorio privado de archivos jar "permitidos" para extraer, y eso hará que la auditoría de código sea mucho más fácil. Básicamente, reconfigure la hiedra para que no se extraiga de la web, sino para extraerla de su repositorio local únicamente, y luego controle el acceso al repositorio para que solo permita que los archivos jar revisados tengan una licencia aceptable.
Una vez que tenga el software en su lugar, puede permitirse dividir los proyectos en partes más pequeñas. Esto le permitirá hacer lo correcto (si su proyecto favorece la descomposición pequeña) en lugar de lo conveniente (unos pocos trozos grandes que podrían no serle de gran utilidad en el mantenimiento de la descomposición). En cuanto a dónde hacer los cortes, eso depende en gran medida de los detalles de su aplicación.
Muchas piezas pequeñas tienden a ser más fáciles de digerir una persona nueva una a una. También hacen que la gente piense en dónde se debe agregar funcionalidad a un proyecto; sin embargo, cuesta tiempo y esfuerzo desenredar y separar todos los componentes. El lado positivo es que generalmente es más fácil probar y validar algo más pequeño, la desventaja es que es un camino más largo para descomponer un conjunto monolítico de responsabilidades en muchas unidades pequeñas, bien integradas pero funcionalmente dispares.
Buena suerte
Usamos Maven para administrar dependencias y separar proyectos. Mantiene el código fuente compartimentado en trozos factibles y se asegura de que no tengamos infierno de biblioteca. – mcfinnigan