2011-05-25 14 views
87

Tengo 2 proyectos diferentes compilados en mvn. Estoy tratando de reemplazar a Gradle.Gradle alterno a mvn install

proyecto 1 es SDK y el proyecto 2 es usa el SDK (ejemplo)

En el momento de la experta que crea artefactos usando mvn instalar que se suma todo el proyecto en el repositorio local.

Me gusta trabajar en gradle así. Me gusta el proyecto 1 build.gradle necesita publicarlo como un repositorio local de gradle y luego un proyecto de ejemplo necesita usarlo.

En maven instalamos mvn que agrega un artefacto de proyecto a la carpeta .m2 pero cómo hacerlo en gradle para que pueda agregar un artefacto de proyecto en el repositorio local.

¿De qué manera puedo hacerlo?

+1

http://stackoverflow.com/questions/2572811/gradle-make-a-3rd-party-jar-available-to-local-gradl e-repository – clacke

Respuesta

91

SDK/build.gradle:

apply plugin: "maven" 

group = "foo" 
version = "1.0" 

ejemplo/build.gradle:

repositories { 
    mavenLocal() 
} 

dependencies { 
    compile "foo:sdk:1.0" 
} 

$ SDK> Gradle instalación

$ ejemplo> Gradle construir

+1

apply plugin: "maven" y $ sdk> gradle install Esto instalará el sdk en .m2 ¿verdad? Y mavenLocal() también obtiene información de .m2 y .gradle? – Rajmahendra

+6

'gradle install' se publica en el repositorio local de Maven, y' mavenLocal() 'se asegura de buscar allí las dependencias. –

6

Salida Gradle's documentation on multi-project builds.

Aquí hay un ejemplo, con algunas dependencias adicionales. Simplemente llame al gradle install en la carpeta raíz, y todo se compilará y colocará en su repositorio local.

estructura de carpetas:

root 
+--> build.gradle 
+--> settings.gradle 
+--> sdk 
| +--> build.gradle 
+--> example 
    +--> build.gradle 

root/build.gradle:

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'maven' 

    group = 'myGroup' 
    version = '0.1-SNAPSHOT' 
} 

root/settings.gradle:

include 'sdk' 
include 'example' 

root/SDK/build.gradle:

dependencies { 
    // just an example external dep. 
    compile group:'commons-lang', name:'commons-lang', version:'2.3' 
} 

root/ejemplo/build.gradle:

dependencies { 
    compile project(':sdk') 
    compile group:'log4j', name:'log4j', version:'1.2.16' 
} 
+2

¿Es esta práctica ideal? ¿Qué sucede si quiere crear un nuevo proyecto, ejemplo2, que también depende de sdk? Ahora tiene que poner 2 proyectos no relacionados en un proyecto raíz solo porque comparten una dependencia. Cualquiera pensaría que toda esta configuración de 'múltiples proyectos' también sería un proyecto de 1 Git. Nuevamente, ¿esto es malo para los flujos de trabajo de la compañía/multi-desarrollador? –