Inferir dependencias en un subproyecto de Gradle a partir de su proyecto padre.
Actualmente tengo 3 subproyectos en mi proyecto Gradle, estructurados de la siguiente manera:
Proyecto principal
|
— Proyecto A
— Proyecto B
— Src Común
El Proyecto A depende de Librería A y Src Común, y el Proyecto B depende de Librería B y Src Común. Librería A y Librería B contienen diferentes implementaciones de las mismas clases.
Mi plan para el proyecto Src Común era albergar todas las clases de utilidad, dependiendo necesariamente tanto de Librería A como de Librería B.
¿Existe alguna forma de configurar esto y cómo debería verse mi proyecto Gradle?
Cosas que he intentado:
- He intentado eliminar Src Común como subproyecto y solo incluirlo en las fuentes de Proyecto A y Proyecto B. Sin embargo, IntelliJ parece marcar Src Común como origen de las fuentes de Proyecto A, y aunque la compilación a través de Gradle funciona, no logro que IntelliJ reconozca que Proyecto B también tiene como origen de las fuentes a Src Común.
-
Agregar tanto Librería A como Librería B como dependencia de Src Común, pero obviamente eso no funciona.
El contexto:
He creado un mod de Minecraft compatible tanto con Forge (Proyecto A) como con Fabric (Proyecto B). Tengo clases de utilidad en ambos proyectos que tienen el mismo código fuente pero necesitan ser compiladas dos veces, cada vez con una dependencia diferente. No quiero tener que escribir el código dos veces cada vez que quiera cambiar algo en las clases de utilidad.
davy.ai
Solución:
Para configurar esto, debes mantener Common Src como un subproyecto separado e incluirlo como una dependencia en Project A y Project B. Para manejar las dependencias conflictivas, puedes utilizar las configuraciones y estrategias de resolución de Gradle.
¡Eso es todo! Con esta configuración, Common Src contendrá el código de utilidad compartido y ambos subproyectos podrán utilizarlo, cada uno con la versión correcta de las dependencias conflictivas.