Cómo añadir o actualizar una dependencia
Qué debemos hacer a la hora de añadir o actualizar una dependencia en un pom
Si vamos a añadir o actualizar una dependencia externa en un pom.xml en un proyecto de gvSIG, tendremos que hacer lo siguiente:
Primero, nos asegurarnos que la dependencia y la versión que nos interesa está ya disponible en algunos de los repositorios oficiales de maven. Para ello tenemos dos opciones:
- Realizar una búsqueda manual, mediante google o inspección directa de alguno de los repositorios alternativos de maven.
Si hemos encontrado la dependencia deseada, ya podemos modificar el pom.xml, pues ya sabemos que está disponible para todos.
Si no hemos encontrado la dependencia, habría que pedir al proyecto original que suban la dependencia al repositorio oficial de maven, proporcionándoles la información necesaria para ello para que les sea más sencillo:
Así, contribuiremos con la comunidad a facilitar el uso de la librería correspondiente a través de maven. En algún proyecto es posible incluso que nos propongan que nos encarguemos de actualizar nosotros el repositorio de maven con nuevas versiones de una librería.
Si desde el proyecto original no se quiere hacer o se tarda mucho, podemos subirla temporalmente al repositorio maven de gvSIG, quitándola cuando esté disponible en el repositorio oficial.
¿Cómo subir una libraría al repositorio maven de gvSIG?
Lo ideal sería que todas las librerías de las que depende un proyecto de gvSIG tuviesen un repositorio maven para poder descargarlas. Lamentablemente esto siempre no es así y a veces hay que subir una librería al repositorio maven de gvSIG.
En ese caso, para hacer pruebas lo primero que debemos hacer es incluir la dependencia en nuestro repositorio local de maven. Para ello usaremos el siguiente comando:
mvn deploy:deploy-file -Durl=REPO_URL -DrepositoryId=some.id -Dfile=your-artifact-1.0.jar [-DpomFile=your-pom.xml] [-DgroupId=org.some.group] [-DartifactId=your-artifact] [-Dversion=1.0] [-Dpackaging=jar] [-Dclassifier=test] [-DgeneratePom=true] [-DgeneratePom.description="My Project Description"] [-DrepositoryLayout=legacy] [-DuniqueVersion=false]
El comando admite muchas opciones, sobre las cuáles podemos encontrar más documentación en la web del proyecto maven, en el apartado del plugin deploy. Sin embargo, lo más habitual será emplear lo siguiente:
mvn deploy:deploy-file -DgroupId=$LIBRARY_GROUPID -DartifactId=$LIBRARY_ID -Dversion=$LIBRARY_VERSION [-Dclassifier=$LIBRARY_CLASSIFIER] -Dpackaging=jar -Dfile=$LIBRARY_JAR -Durl=$REPOSITORY_URL -DrepositoryId=gvsig-repository
Los valores de las variables (empiezan por $) deberemos sustituirlos por:
- LIBRARY_GROUPID:
- un valor típico suele ser el dominio principal del proyecto. Por ejemplo, para los proyectos gvSIG es org.gvsig, para los proyectos apache org.apache, etc.
- LIBRARY_ID:
- identificador o nombre de la librería. Suele ser un nombre único o bien un nombre con estilo de paquete java. En gvSIG los proyectos emplean este último formato (ej: org.gvsig.tools.lib).
- LIBRARY_VERSION:
- versión del jar que vamos a subir.
- LIBRARY_CLASSIFIER:
- para proyectos que generan varios jars, se emplea este valor para distinguir entre ellos. Un valor típico es tests, para el jar con los tests unitarios del proyecto. Es opcional y no suele ser necesario.
- LIBRARY_JAR:
- path absoluto al archivo .jar que vamos a subir, o bien relativo desde el directorio donde ejecutamos maven
- REPOSITORY_URL:
url del repositorio maven al que vamos a subir. En general usaremos dos opciones:
El repositorio local de maven: $USER_HOME/.m2/repository.
En este caso hay que tener en cuenta que la dependencia sólo estará disponible para nuestro usuario en local. Suele emplearse para pruebas antes de subir la dependencia al repositorio de gvSIG.
El repositorio maven de gvSIG: dav:https://devel.gvsig.org/m2repo/j2se
Una vez subido a este repositorio ya estará disponible para el resto de desarrolladores.
Note
Para que el deploy funcione se ha tenido que configurar previamente el fichero settings.xml tal y como se indica en el documento "Configuración inicial de maven" de la guía del desarrollador, apartado "Acceso de escritura al repositorio maven de gvSIG".
A modo de ejemplo, supongamos que tenemos un jar de la librería JEP en su versión 2.4.0 que queremos incluir como dependencia. La instrucción completa a emplear sería:
mvn deploy:deploy-file -DgroupId=org.nfunk \ -DartifactId=jep \ -Dversion=2.4.0 \ -Dpackaging=jar \ -Dfile=jep.jar \ -Durl=dav:https://devel.gvsig.org/m2repo/j2se \ -DrepositoryId=gvsig-repository