2012-07-16 12 views
13

Construyo un archivo jar sin usar la tarea Gradle Jar (necesito usar la tarea Ant para eso dentro de mi tarea). ¿Cómo configuro uploadArchives para poder instalar JAR en el repositorio especificado?Gradle: Cómo cargar un archivo JAR personalizado en el repositorio de Maven

he tratado de anular artefacto defecto con

uploadArchives { 
    repositories { 
     mavenDeployer { 
      // some Maven configuration 
     } 
    } 
} 

artifacts { 
    archives file: file('bin/result.jar') 
} 

pero estoy recibiendo un error que no puede haber 2 artefactos con el mismo tipo y clasificador, lo que significa que esta configuración añade más bien que anula la configuración.

Respuesta

20

Tiene razón, el cierre artifacts solo puede agregar artefactos a la configuración dada (consulte ArtifactHandler API).

tiene dos opciones:

1) Añadir un filtro artefacto como se describe here (véase el capítulo 45.6.4.1 "múltiples artefactos por proyecto")... Si utiliza esto, trate de declarar su configuración archives como:

artifacts { 
    archives file: file('bin/result.jar'), name: 'result', type: 'jar' 
} 

De esta forma, algo como esto en su filtro artefacto:

addFilter('result') {artifact, file -> 
    artifact.name == 'result' 
} 

2) subirlo como un módulo experto independiente. Si result.jar es el único contenedor que está cargando, esta puede ser una buena solución.

configurations { 
    resultArchives 
} 

uploadResultArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: "same/url/here") 
    } 
    } 
} 

artifacts{ 
    resultArchives file: file('bin/result.jar') 
} 

Espero que esto ayude.

+0

Gracias por la solución. Este último funcionó en mi caso como un encanto. –

+0

Aparece un error Gradle DSLmethod no encontrado 'uploadResultArchive', he aplicado el plugin maven. Cualquier otro complemento requerido – sver

+1

@sver Supongo que se refería a _uploadArchives_ – zaxme

Cuestiones relacionadas