Corrigiendo maven-wrapper

2021/10/01

ACTUALIZACIÓN

Utilizando la nueva versión de maven-wrapper y partiendo de un directorio que contenga un archivo pom.xml válido:

$ MVNW_VERBOSE=true \
  MVNW_REPOURL='https://my-mirror.example.com/maven2' \
  mvn wrapper:wrapper -Dmaven=3.8.6
$ MVNW_VERBOSE=true \
  ./mvnw install

Hoy estuve trabajando en un proyecto que utiliza maven, configurandolo para descargar todas las dependencias de un mirror local.

Durante la inspección de las urls desde donde se realizan las descargas encuentro que luego de configurar el archivo .mvn/wrapper/maven-wrapper.properties con un mirror alternativo, por ejemplo:

distributionUrl=https://my-mirror.example.com/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
wrapperUrl=https://my-mirror.example.com/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

igualmente se realiza la descarga del archivo maven-wrapper-0.5.6.jar desde https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar, ignorando el valor de wrapperUrl.

El problema se debe a que no se está calculando correctamente la ruta del archivo de properties, consistiendo el arreglo en el siguiente parche:

--- .mvn/wrapper/MavenWrapperDownloader.java.orig	2021-10-01 17:11:55.443675541 -0300
+++ .mvn/wrapper/MavenWrapperDownloader.java	2021-10-01 22:00:58.943934407 -0300
@@ -52,7 +52,7 @@

         // If the maven-wrapper.properties exists, read it and check if it contains a custom
         // wrapperUrl parameter.
-        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        File mavenWrapperPropertyFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_PROPERTIES_PATH);
         String url = DEFAULT_DOWNLOAD_URL;
         if(mavenWrapperPropertyFile.exists()) {
             FileInputStream mavenWrapperPropertyFileInputStream = null;

Este fué enviado como un pull request a maven-wrapper, pero debido a que el proyecto actualmente se encuentra en estado frozen y es posible que no se aplique es que aprovecho a documentar el fix en un lugar más visible, por lo menos para mi.