Recientemente comencé a usar Gradle y reemplazo mis proyectos existentes basados en Maven. He tenido muchos problemas en el pasado con el manejo de compilaciones de varios módulos con Maven. Gradle ha sido un soplo de aire fresco cuando se maneja con módulos de varios módulos, pero todavía no es perfecto.Configuración del proyecto de varios módulos Gradle
que tienen la disposición siguiente carpeta para mis proyectos:
-- Projects
---- EnterpriseApp1
------ EarProject
-------- build.gradle
------ EjbProject
-------- build.gradle
------ WarProject
-------- build.gradle
------ properties.gradle
------ build.gradle
---- CommonLib
------ build.gradle
---- ClientApplication
------ build.gradle
El problema que estoy teniendo es que el "EnterpriseApp1" y "ClientApplication" tanto dependen del proyecto commonlib. No sé cómo configurar mi archivo de compilación "EnterpriseApp1" para usar el proyecto CommonLib como dependencia para el "Proyecto Ejb". He estado muy cerca de hacer que esto funcione, pero aún no funciona del todo. Tuve éxito al copiar la carpeta CommonLib dentro de "EnterpriseApp1", pero esa no es una solución a largo plazo.
Aquí está mi archivo properties.gradle actual en "EnterpriseApp1":
include "EarProject", "EjbProject", "WarProject"
includeFlat "CommonLib"
De acuerdo con la documentación Gradle el comando "includeFlat" en el archivo "settings.gradle" incluirá proyectos en la misma palanca como el carpeta donde está el archivo "settings.gradle" (comportamiento deseado).
archivo/build.gradle EnterpriseApp1:
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.6
group = 'org.example'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
...
}
dependencies {
}
}
EnterpriseApp1/EjbProject/build.gradle:
apply plugin: 'java'
sourceCompatibility = 1.6
repositories {
mavenCentral()
...
}
dependencies {
compile project(':CommonLib')
compile group: 'org.restlet.jee', name: 'org.restlet', version: '2.0.11'
compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.0'
...
compile group: 'javax.jmdns', name: 'jmdns', version: '3.4.1'
}
Cuando ejecuto "Gradle generación limpia" de la carpeta EnterpriseApp1 todas las dependencias se descargan como se esperaba y los proyectos comienzan a compilarse (incluido el proyecto CommonLib), pero el proyecto EjbProject falla durante la construcción debido al hecho de que le falta la referencia de jar CommonLib. Gradle no es lo suficientemente inteligente (o estoy completamente despistado;)) para configurar mi EjbProject para usar el Jar generado a partir de la etapa de compilación del proyecto CommonLib.
Pido disculpas por la configuración larga y complicada. He estado trabajando en tratar de resolver esto desde hace un tiempo, pero casi se han quedado sin ideas. Realmente agradecería cualquier ayuda para la comunidad.
Gracias!
Algo falla con la sangría del diseño de directorio que se muestra. ¿Es esta una compilación, donde CommonLib y ClientApplication están en el mismo nivel de directorio que EnterpriseApp1, y los otros proyectos tienen un nivel inferior? (Eso sería un diseño muy poco común. Generalmente es o.) –
Además, ¿cómo debería saber Gradle que CommonLib es una dependencia de EjbProject, dado que no especifica esa dependencia en 'EjbProject/build.gradle'? –
¿Tiene intención de decir: este es mi archivo _settings.gradle_ actual en "EnterpriseApp1" –