2011-08-18 35 views
7

Me estoy arrancando el pelo por esto. He desvinculado mis scripts del código provisto en las páginas de tutoriales de Gradle, ya que creo que estoy haciendo algo fundamentalmente erróneo o he entendido mal cómo se supone que una aplicación de múltiples proyectos se debe estructurar usando gradle.Creando un proyecto multi Java usando Gradle

Tengo tres proyectos java dentro de eclipse, con los tres que contienen un script build.gradle y solo uno que contiene un script settings.gradle. La estructura es la siguiente:

Scripts 
-- build.gradle 
-- settings.gradle 
Database 
-- build.gradle 
Services 
-- build.gradle 

que estoy tratando de construir el 'Base de datos' y el proyecto 'Servicios' mediante el script de construcción en el proyecto 'Scripts'. Para crear el árbol del proyecto, tengo el siguiente código en settings.gradle:

include 'Services', 'Database' 

project (':Services').projectDir = new File(settingsDir, "../Services") 
project (':Database').projectDir = new File(settingsDir, "../Database") 

Replicar el código en el tutorial varios proyectos (docs Gradle), estoy tratando de conseguir cada uno de los scripts de creación para imprimir sacar un poco de texto para asegurar que todo esté configurado correctamente. Mi objetivo final es tener las dependencias construidas correctamente cuando se ejecuta 'eclipseClasspath', para que todos los proyectos se compilen correctamente dentro de Eclipse. Sin embargo, ¡el texto no se está imprimiendo como esperaba!

A continuación se presentan lo que está contenido dentro de los tres guiones de construcción:

Scripts build.gradle

allprojects { 
    task hello << { task -> println "I'm $task.project.name" } 
} 

subprojects { 
    hello << {println "- I depend on Scripts"} 
} 

base de datos build.gradle

hello.doLast { 
    println "- I'm inside database" 
} 

Servicios build.gradle

hello.doLast { 
    println "- I'm inside services" 
} 

Dentro del proyecto 'Scripts', cuando corro 'Gradle -q hola', consigo los siguientes resultados:

I'm Scripts 
I'm AnprDatabase 
- I depend on Scripts 
I'm Database 
- I depend on Scripts 

¿Por qué el texto '- Estoy dentro de la base de datos' y '-Estoy en el interior servicios que no aparecen? Estoy un poco desconcertado por eso. Solo puedo suponer que tiene algo que ver con la estructura de mi proyecto. ¿Alguien puede confirmar que este es el caso? Si no, ¿cuál es el problema? Como mencioné, he desvinculado mis scripts de este simple ejemplo, ya que no pude ejecutar las dependencias dentro de cada script de construcción de proyectos usando la misma estructura.

Agradecemos enormemente cualquier ayuda ofrecida.

+0

Funciona bien para mí, 'gradle-1.0-milestone-3' – axtavt

+0

Estoy usando la misma versión de gradle. ¿Su aplicación consiste en proyectos Java en la misma estructura que la mía? – ScreamingMage

+0

Otra pregunta para usted axtavt, ¿se ejecuta su script de construcción desde su proyecto 'Scripts' equivalente o está en la raíz de los tres proyectos? Quiero probar y ejecutar el mío desde el proyecto 'Scripts' – ScreamingMage

Respuesta

4

He logrado averiguar por qué no está funcionando. Fue un error tonto de mi parte. El proyecto 'Base de datos' y 'Servicios' no estaban en el mismo directorio que mi proyecto 'Scripts'. Había revisado estos proyectos en un repositorio git, que copia los directorios locales de mi espacio de trabajo Eclipse y en el repositorio git local. No había revisado el proyecto 'Scripts' en mi repositorio de git, por lo que todavía residía en mi espacio de trabajo de Eclipse. ¡Parece muy obvio ahora por qué no funcionó! Comprobando mi proyecto 'Scripts' y cambiando la ruta a los otros proyectos en settings.gradle ha solucionado el problema.

Es interesante que en lugar de arrojar una excepción FileNotFoundException o algo similar, Gradle creará un proyecto vacío si no puede encontrar el definido. Esto fue algo que no he apreciado. Al principio, pensé que se trataba de un comportamiento extraño, pero supongo que le da al usuario el poder de crear sus proyectos sobre la marcha en el tiempo de ejecución del script. ¡Aunque no estoy seguro si me gusta!

Por lo tanto, siempre asegúrese de navegar al directorio correcto en su configuración al incluir proyectos. De lo contrario, puedes cometer una falta como yo.

Cuestiones relacionadas