¿Cómo obtener la ubicación del repositorio local de Maven?

81

¿Hay alguna forma de obtener la ubicación del repositorio local de Maven?

Con el siguiente comando, puede obligar a Maven a usar un archivo de configuración específico:

 mvn -s < path to settings file >

Sé que puede editar el settings.xmlarchivo para establecer una ubicación de repositorio, pero ¿puedo obtener el valor predeterminado actual con algún comando de Maven?

código-gijoe
fuente

Respuestas:

121

Si solo desea el repositorio local, intente esto:

mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]'

EDITAR

Estoy revisando esto después de años porque las versiones recientes del complemento de ayuda de Maven introdujeron un parámetro útil para el evaluateobjetivo llamado forceStdoutque nos permite eliminar la necesidad de grep de la salida:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
adutra
fuente
2
Creo que tu intención es | grep -v '\[INFO\]' Tu expresión regular tiene efectos secundarios desagradables.
kubanczyk
ambas versiones funcionan para mí, ¿qué quieres decir con "efectos secundarios desagradables"?
adutra
3
@adutra Su expresión regular especifica un grupo de coincidencia que consta de los caracteres en mayúsculas I, N, F y O. Por lo tanto, coincidirá con cualquiera de esas líneas: INFO, OFNI, I, F, N, etc. Pruébeloecho -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
pmr
3
Esto no funcionará si tiene advertencias de maven o descarga dependencias. El siguiente grep, que busca rutas de archivo absolutas, debería funcionar tanto en Unix como en Windows:mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
SiXoS
@SiXoS el tuyo tampoco funcionó, en mi caso, mvn arrojó advertencias cuando [INFO] Escaneando proyectos ... y no coincidió con nada cuando la salida se grep.
Sajuuk
50

Sí, puede obtenerlo con la opción -Xo --debug, p. Ej.mvn -X

...
[DEBUG] Reading global settings from C:\Maven\conf\settings.xml
[DEBUG] Reading user settings from C:\segphault\.m2\settings.xml
[DEBUG] Using local repository at C:\Repo
...
Justin Garrick
fuente
38

El complemento de ayuda de Maven mostrará la configuración local, incluida la ruta del repositorio local.

Quieres el comando:

mvn help:effective-settings

La salida mostrará la configuración en formato XML. Busque el elemento localRepository:

<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>
JRS
fuente
parece que si arroja una advertencia, la salida no estará en formato XML.
Sajuuk
19

En el ínterin se puede hacer eso de una manera más simple:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

También puede usarlo directamente para asignar una variable de shell como esta:

RESULT=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)

Nota importante: utilice la versión más reciente de Maven y, por supuesto, la versión más reciente de maven-help-plugin ...

Esto contendrá el resultado sin una nueva línea, etc.

Khmarbaise
fuente
Esta respuesta debería ser la respuesta aceptada, ya que brinda una solución que produce un resultado más limpio que cualquier otra solución propuesta hasta ahora.
Zartc
Esto está roto en al menos algunas plataformas / configuraciones. Para mí (fc 28, Maven 3.5.2), -q hace que no produzca salida, aunque sin -q, la propiedad está ahí, pero debe eliminarse.
Pawel Veselov
5

Debería estar en el directorio /home/.m2, la carpeta probablemente esté oculta. Por lo tanto, necesitará Ctrl + H para ver las carpetas ocultas.

Aboozar Rajabi
fuente
5

Para usuarios de Windows

Por lo general es en: C:\Users\USER_NAME\.m2\repository.
Sin embargo, el mvn help:effective-settingscomando seguramente mostrará la ruta local en respuesta xml.

Shubham Pandey
fuente
0

Puede lograr esto habilitando el modo de depuración usando la -Xopción y descubriendo la línea que menciona el repositorio local que se está utilizando.

Harshit Sharma
fuente