Archivo

Archive for 7 mayo 2010

Crear un repositorio de Maven

mayo 7, 2010 2 comentarios

Desde que uso Maven evito, siempre que puedo, incluir los jar de las dependencias en el proyecto. Un buen sitio donde localizar estas dependencias es http://mvnrepository.com/. A veces un proyecto mantiene su propio repositorio de Maven, como es el caso de JBoss, y tienes que registrarlo en el pom.xml:

<repository>
  <id>jboss.com</id>
  <name>JBoss Maven Repository</name>
  <url>http://repository.jboss.com/maven2</url>
</repository>

Pero no siempre pueden encontrar las librerías que necesitas en un repositorio de Maven. En en ese caso puede optar por incluirlas en el fuente de la aplicación y registrarlas manualmente:

$ mvn install:install-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar

O puedes crear tu propio repositorio. En este caso hay distintas herramientas que te ayudarán en la tarea, como Nexus. Pero si eres amante de las cosas sencillas te gustará saber que con un simple servidor web también puedes hacerlo.

Para empezar creamos un usuario al que llamaremos “maven” y en su $HOME también vamos a crear los directorio “repository” y “repository/maven2”. Le tendremos que dar los permisos de lectura pertienentes a Apache porque se encargará de servir las librerías. Por tanto daremos de alta un VirtualHost para tener acceso al repositorio:

<VirtualHost *>
  DocumentRoot /home/maven/repository
  ServerName repository.monkiki.org
</VirtualHost>

Mientra, en nuestro ordenador local hay que editar el fichero ~/.m2/settings.xml para establecer las credenciales que nos permitirán registrar librerías en el repositorio que acabamos de crear.

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>/home/monkiki/.m2/repository</localRepository>
  <servers>
    <server>
      <id>monkiki.org</id>
      <username>maven</username>
      <password>s3cr3t0</password>
    </server>
  </servers>
</settings>

Podemos ir incluyendo librerías así:

$ mvn deploy:deploy-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar -Durl=scp://repository.monkiki.org/home/maven/repository/maven2 -DrepositoryId=org.monkiki

En caso de que la librería tenga dependencias, es buena praxis indicar en el registro el pom de dicha librería para que Maven gestione correctamente estas dependencias transitivas, en lugar de tener que incluirlas artificialmente en el pom.xml de nuestro proyecto. Para ello se utiliza el parámetro:

-DpomFile=/path/to/pom.xml

En los pom.xml de nuestros proyectos, hemos de registrar repositorio de esta manera:

<repositories>
  <repository>
    <id>monkiki.org</id>
    <name>Mi repositorio de maven particular</name>
    <url>http://repository.monkiki.org/maven2</url>
  </repository>
</repositories>

Y esto es todo, amigo!

Ver también:

Anuncios
Categorías:Java, Ubuntu