2012-04-16 20 views
15

Me gustaría verificar desde la línea de comandos si se puede encontrar una determinada coordenada (groupId.artifactId.version) en un repositorio.¿Cómo determinar si un artefacto Maven está en mi repositorio desde la línea de comandos?

Si es posible, ¿se puede hacer con coordenadas parciales (por ejemplo, artifactId.version)? ¿Puedo especificar el repositorio?

Yo no pido soluciones - yo podría simplemente iniciar una búsqueda de archivos en mi repo local o introducir el artefacto en un POM y esperar a que los errores, o instalar Nexus y buscar a través de la interfaz de usuario ...

Es algo conveniente: una vez en la CLI, sería bueno poder verificar rápidamente.

+0

Considere la posibilidad de configurar un administrador de repositorio como Nexus o Artifactory. Ambos proporcionan GUIs basadas en la web para buscar –

+1

@ MarkO'Connor Gracias, estoy familiarizado con Nexus y lo uso en el trabajo, pero en mi computadora personal lo considero excesivo (con eclipse, jenkins y el navegador dividiendo mi RAM entre ellos, ya que es) – kostja

+1

Entendido, pero he descubierto que Nexus es muy liviano en cuanto a los recursos y, francamente, no puedo vivir sin él. Hago muchas construcciones cuando estoy desconectado de la red y encuentro que Nexus funciona mejor como un caché de repositorio. –

Respuesta

16

Aquí es el más cercano creo que obtendrá:

mvn dependency:get -Dartifact=g:a:v -o -DrepoUrl=file://path/to/your/repo 

Me'v lo intentó, tiene éxito si el artefacto (por ejemplo, "junit: junit: 4.8.2") está en su repositorio y falla si no es así, pero debe escribir la ruta completa a su repositorio local como una URL.

La clave es utilizar el distintivo -o (fuera de línea), ya que de lo contrario maven siempre comprobará el repositorio central.

+0

Funciona como lo anuncian, aunque es bastante tedioso. Hubiera pensado que el -o haría el informe redundante (pero lo intentó y no lo hace). Gracias. – kostja

+0

@kostja Lo sé, con Maven a veces los requisitos más obvios son los más difíciles de implementar :-( –

+2

+1. Una nota: a partir de ahora, * repoUrl * está en desuso, use [** remoteRepositories **] (http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html#remoteRepositories) en su lugar. – informatik01

1

Nunca escuché algo como esto. Probablemente el objetivo get del plugin dependency esté de alguna manera cerca, pero todavía no es exactamente lo que está buscando. Me temo que no existe tal cosa. Sin embargo, escribir su propio plugin Maven que haga lo que quiera podría ser bastante simple. El nuevo mecanismo de resolución de artefactos en Maven 3, llamado Aether, tiene una API realmente buena y simple.

De todos modos, mira plugin de dependencia:

http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

+0

me indicó la dirección correcta, gracias. Realmente consideré escribir un plugin de mvn por un minuto, tuve que esforzarme para mantenerme enfocado :) – kostja

Cuestiones relacionadas