Inicio > Java, Ubuntu > Crear un repositorio de Maven

Crear un repositorio de Maven

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
  1. Ramon
    abril 27, 2015 en 5:23 am

    Hola, estoy tratando de crear un repositorio local para un proyecto, pero tengo asignado es un servidor con Windows Server 2012, tengo apache server 2.2 y maven 3.3.1 instalado, pero no logro hacer que funcione, quizá sea algun paso que deba hacer, pero no tengo ninguna idea de cual pueada ser, te agradecería si me puedes ayudar.

  2. monkiki
    abril 27, 2015 en 7:18 am

    Hola, según describo en el artículo solamente se trata de exponer el repositorio Maven por Apache. No tiene más misterio. Puede que tengas problemas con los permisos. Sin saber nada más es complicado averiguar que pasa.

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: