http://www.notodocodigo.com/maven/repositorios/
El repositorio corporativo Es muy raro que un desarrollador programe sólo, lo normal será que esté integrado en un equipo de desarrollo o en una organización, donde trabajará en distintos proyectos y participará en aplicaciones que hayan programado otros desarrolladores.
Si los desarrolladores únicamente usan su repositorio local (.m2) y los distintos repositorios remotos a los que se conecten, puede que cuando compartan los proyectos, estos no compilen. En la siguiente imagen ilustramos un ejemplo de esto:
En el campo de la programación hay muchos servicios que son necesarios en el día a día, aparte de los repositorios de código, están los repositorios de librerías. Las librerías construidas por otros o por un equipo propio necesitan ser almacenadas en algún servidor donde puedan ser recuperadas fácilmente, por ejemplo, Maven permite conectar a los diferentes repositorios compatibles en busca de las librerías necesarias para compilar una aplicación. Entre los diferentes repositorios de código se encuentra Nexus Repository Manager, que dispone de una versión gratuita que es más que suficiente para el uso normal.
https://www.sonatype.com/nexus-repository-oss https://www.sonatype.com/download-oss-sonatype
https://help.sonatype.com/display/NXRM3
Si está desarrollando software sin un administrador de repositorio, es probable que se pierda una serie de oportunidades para reducir algunas ineficiencias bastante obvias. Si todos en su equipo tienen que acceder a repositorios públicos como el Depósito Central para descargar componentes, se está perdiendo algunas ganancias simples en velocidad y eficiencia. Si no tiene un lugar local para implementar componentes, se ve obligado a compartir componentes binarios utilizando medias tintas y compromisos como el almacenamiento de archivos binarios en el control de código fuente. Deja de desarrollar en la Edad Media, lee esta guía y comienza a usar un administrador de repositorios. Confíe en nosotros, una vez que comience a utilizar un administrador de repositorio Nexus, se preguntará cómo ha funcionado sin él.
Configuración mínima recomendada:
Java 8 Nexus Repository Manager requiere Java 8 Runtime Environment (JRE) de Oracle 2 GB de memoria libre + 2 GB + espacio libre en disco
En nuestro caso usaremos:
Sistema operativo: Xenial 16.04 (LTS) x64.
Procesador: 64bits.
Memoria: 16GB.
Instalar y ejecutar Nexus Repository Manager es sencillo. Puede descomprimir el archivo en un directorio al que tenga acceso completo, o puede instalarlo con una imagen Docker.
https://blog.moon.cat/instalar-nexus-repository-manager-maven/
Empezamos descargando la última versión de Nexus 2 desde la web oficial.
cd /opt wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz tar -zxf nexus-latest-bundle.tar.gz rm nexus-latest-bundle.tar.gz mv nexus-2.14.4-03 nexus
cd /opt wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz tar -zxf nexus-latest-bundle.tar.gz rm nexus-latest-bundle.tar.gz mv nexus-2.14.4-03 nexus
Esto nos deja la carpeta nexus que contiene el sistema y la carpeta sonatype-work donde irán los repositorios, tal como está ya puede ser utilizado Nexus pero vamos a ir un poco más allá.
https://help.sonatype.com/display/NXRM3/Installation+Methods
Los archivos de distribución combinan la aplicación y todos los recursos necesarios en un archivo de almacenamiento.
Si está instalando el administrador de repositorios en una estación de trabajo local para ejecutar una prueba, puede instalarlo en su directorio de inicio o donde lo desee. Nexus Repository Manager no tiene ningún directorio codificado y se ejecutará desde cualquier directorio.
En OSX o Linux, el archivo GZip’d TAR descargado se puede extraer con el comando tar xvzf
.
tar xvzf nexus-3.8.0-02-unix.tar.gz
Instala el administrador de repositorios en un directorio que no sea el directorio de inicio de los usuarios. En una máquina Unix la práctica común es usar /opt
. El proceso de extracción crea dos directorios hermanos: un directorio de aplicaciones y un directorio de datos, a veces llamado el directorio “trabajo Sonatype”. Se pueden encontrar más detalles sobre estas carpetas y sus contenidos en Directorios .
Después de extraer el archivo del gestor de repositorio, aparecerán dos directorios:
nexus-[versión]
Este directorio contiene la aplicación Nexus Repository Manager y todos los componentes adicionales necesarios, como las bibliotecas de Java y los archivos de configuración. El nombre del directorio por defecto se usa nexus-[versión]
. A este directorio se le conoce como install-dir
. Contiene la siguiente estructura:
LICENSE.txt y NOTICE.txt: Estos son archivos que contienen detalles legales sobre la licencia y avisos de derechos de autor
bin: Este directorio contiene el nexus script de inicio así como los archivos de configuración relacionados con el inicio
etc: Este directorio contiene archivos de configuración
lib: Este directorio contiene bibliotecas binarias relacionadas con Apache Karaf
public: Este directorio contiene recursos públicos de la aplicación
system: Este directorio contiene todos los componentes y complementos que constituyen la aplicación
Este directorio contiene todos los repositorios, componentes y otros datos que el administrador de repositorio almacena y administra. La ubicación predeterminada del directorio de datos es: ../sonatype-work/nexus3
relativa al directorio de instalación. A este directorio se le conoce como data-dir
.
Incluye subdirectorios que contienen todos los componentes, repositorios, configuraciones y otros datos presentados por el administrador del repositorio. Los subdirectorios se enumeran como:
blobs/: Esta es la ubicación predeterminada del blob store. Si proporcionó una ruta de acceso totalmente calificada al crear un nuevo blob store, es posible que no termine en este directorio.
cache/: Este directorio contiene información sobre los paquetes de Karaf actualmente en caché
db/: Este directorio contiene las bases de datos de OrientDB que son el almacenamiento principal para los metadatos de su gestor de repositorio
elasticsearch/: Este directorio contiene el estado actualmente configurado de Elasticsearch
etc/: Este directorio contiene la configuración principal de tiempo de ejecución y la personalización del administrador de repositorios. Los archivos se explican con más detalle en Configuración del entorno de ejecución .
health-check/: Este directorio contiene informes en caché de la función Repository Health Check
keystores/: Esto contiene la clave generada automáticamente utilizada para identificar a su administrador de repositorio
log/: Este directorio contiene varios archivos de registro que capturan información sobre diversos aspectos del administrador de repositorio en ejecución. Los archivos nexus.log y request.logse rotan todos los días, por lo que este directorio también contiene copias archivadas de estos archivos. Para reclamar espacio en disco, puede eliminar archivos de registro antiguos del directorio de registros. Los archivos de registro encontrados en este directorio incluyen:
El log directorio también contiene un tasks subdirectorio que contiene archivos de salida de registro separados, con un nombre único (por fecha, hora y nombre de tarea) para cada tarea que se ejecuta. Consulte Registro de tareas para obtener más detalles sobre la estrategia de nombres y el contenido de estos archivos.
tmp/ : Este directorio se usa para almacenamiento temporal
https://help.sonatype.com/display/NXRM3/Java+Runtime+Environment
$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
Cuando se instalan varias versiones de JDK o JRE, debe asegurarse de que la versión correcta esté configurada ejecutando el comando anterior como el usuario del sistema operativo que se utiliza para ejecutar el administrador de repositorios.
Es posible que necesite actualizar la configuración para especificar una ruta de instalación de JDK o JRE específica: para establecer la ruta de una ubicación Java específica, abra la bin/nexus
secuencia de comandos y ubique la línea INSTALL4J_JAVA_HOME_OVERRIDE
. Elimine el hash y especifique la ubicación de su JDK / JRE:
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/lib/jvm/java-8-oracle
La secuencia de comandos de inicio verifica el entorno de ejecución comprobando la existencia del bin/java comando anidado así como la versión principal y secundaria del tiempo de ejecución para que sea el requerido 1.8. Si el tiempo de ejecución configurado no es adecuado, se realizará el mejor esfuerzo para localizar un tiempo de ejecución adecuado configurado en la ruta o mediante la JAVA_HOME variable de entorno. Si tiene éxito, iniciará el administrador de repositorio con esta JVM. Esto le permite tener un entorno de tiempo de ejecución dedicado para el gestor de repositorios instalado que no está en la ruta y no lo utilizan otras aplicaciones instaladas. Además, puede separar las actualizaciones del tiempo de ejecución de Java utilizado por el administrador de repositorio de las actualizaciones del tiempo de ejecución utilizado por otras aplicaciones.
La bin carpeta contiene los scripts de inicio genéricos para plataformas de tipo Unix llamadas nexus se incia con ./nexus run
El inicio está completo cuando el registro muestra el mensaje “Started Sonatype Nexus”.
https://help.sonatype.com/display/NXRM3/Run+as+a+Service
Al instalar Nexus Repository Manager para el uso de producción, debe configurarse para que se ejecute como un servicio, por lo que se reinicia después de que el servidor se reinicie. Es una buena práctica ejecutar ese servicio o daemon como un usuario específico que solo tiene los derechos de acceso requeridos. La instalación desde el archivo de distribución no incluye la configuración de un servicio. Las siguientes secciones proporcionan instrucciones para configurar el servicio de forma manual. Independientemente del sistema operativo, los pasos son:
https://blog.moon.cat/instalar-nexus-repository-manager-maven/
Para arrancar el servicio tenemos 2 opciones, o lo configuramos para aceptar el arranque como root o le creamos un usuario propio, ya que la 2a opción es la recomendada y que es muy posible que este servidor se comparta con otros servicios, le crearé su propio usuario.
El usuario se puede crear con Yast con las opciones por defecto, así que saltaré ese paso, simplemente indicar que mi usuario se llamará nexus.
Pasamos el control de nexus al nuevo usuario.
cambiamos el usuario y el grupo a los directorios de nexus
adduser nexus
chown -R nexus:root /opt/nexus
chown -R nexus:root /opt/sonatype-work
En bin/nexus.rc
asignar al usuario entre las comillas en la línea a continuación:
vi /opt/provision/nexus-3.8.0-02/bin/nexus.rc
run_as_user="nexus"
chown -R nexus /opt/nexus-3.8.0-02
chown -R nexus /opt/sonatype-work
Nos convertimos en el nuevo usuario e iniciamos el servicio.
su - nexus
Crear un enlace simbólico en init.d
de NEXUS_HOME/bin/nexus
a /etc/init.d/nexus
:
sudo ln -s /opt/provision/nexus-3.8.0-02/bin/nexus /etc/init.d/nexus
ya se puede iniciar como servicio
service nexus start
https://help.sonatype.com/display/NXRM3/Configuring+the+Runtime+Environment
El inicio de la aplicación se realiza con la configuración de JVM en el archivo $install-dir/bin/nexus.vmoptions:
Los tamaños de almacenamiento dinámico predeterminados y máximos para el administrador de repositorio tienen un valor de 1200M, adecuado para la mayoría de los patrones de uso. Como una aplicación Java que se ejecuta en la JVM, el administrador de repositorio está utilizando los parámetros de configuración de JVM para numerosas configuraciones como parte de los parámetros de inicio para la JVM. Estos valores están definidos en el archivo de configuración $install-dir/bin/nexus.vmoptions. Se puede configurar una mayor configuración de memoria con, por ejemplo:
-Xms1500M -Xmx2G Otros parámetros JVM como el algoritmo GC se pueden configurar en la misma ubicación.
Para cambiar o actualizar la ruta de contexto en la instancia que desea apuntar a una aplicación web o componente específico, ubique la nexus-context-path=/ línea en $data-dir/etc/nexus.properties. Aquí hay un ejemplo donde expones la interfaz de usuario a un components directorio.
nexus-context-path=/components/ Por lo tanto, si el puerto está configurado en 9081, la URL expuesta será http://localhost:9081/components/.
Puede usar $install-dir/bin/nexus.vmoptions
para definir una nueva ubicación para los datos que desea conservar. En el archivo de configuración, cambie los valores de - Dkaraf.data, y para designar una ruta absoluta que prefiera usar. El servicio nexus buscará agregar el directorio de datos a la ruta absoluta que configure. Por ejemplo, para usar la ruta absoluta, cambie los valores de la siguiente manera:-Djava.io.tmpdir -XX:LogFile /opt/sonatype-work/nexus3
-Dkaraf.data=/opt/sonatype-work/nexus3
-Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp
-XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log
Docker automatiza la implementación de aplicaciones dentro de contenedores Linux virtualizados. Puede crear un contenedor que admita la instalación de Nexus Repository Manager Pro y Nexus Repository Manager OSS. Para instalar el administrador de repositorios con una imagen Docker, siga los pasos en la imagen Sonatype nexus3 Docker Hub.
https://help.sonatype.com/display/NXRM3/Post+Install+Checklist
Saltar al final de los metadatos Creado por Brian Fox el dic 15, 2017 Ir al inicio de los metadatos Nexus Repository Manager Pro y Nexus Repository Manager OSS incluyen algunas contraseñas y configuraciones predeterminadas para la indexación de repositorios que deben modificarse para que su instalación sea útil (y segura). Después de instalar y ejecutar el administrador de repositorios, debe asegurarse de completar las siguientes tareas:
Paso 1: cambiar la contraseña administrativa y la dirección de correo electrónico
La contraseña administrativa se establece de manera predeterminada en admin123 . Lo primero que debe hacer con su nueva instalación es cambiar esta contraseña. Para cambiar la contraseña administrativa, inicie sesión como admin
con la contraseña admin123
y haga clic en Cambiar contraseña en el menú Seguridad en el lado izquierdo de la ventana del navegador. Para obtener instrucciones más detalladas, consulte Trabajar con su perfil de usuario .
Paso 4: cambiar la contraseña de implementación La contraseña del usuario de implementación se establece de manera predeterminada en deployment123 . Cambie esta contraseña para asegurarse de que solo los desarrolladores autorizados puedan implementar componentes en su instalación. Para cambiar la contraseña de implementación, inicie sesión como administrador. Luego sigue las instrucciones en la sección Usuarios .
https://help.sonatype.com/display/NXRM3/Accessing+the+User+Interface
Una vez que se inicia el administrador de repositorio, la aplicación está escuchando en el rango y el puerto de la dirección IP configurada. Por defecto, se usa cualquier dirección IP y puerto 8081. Para acceder a la interfaz de usuario de la aplicación web, inicie un navegador web y escriba la URL, http://serveripaddress:port p. http://localhost:8081/
La interfaz de usuario muestra las funciones disponibles para un usuario anónimo. La instalación del administrador de repositorio incluye un usuario administrativo con acceso completo. Su nombre de usuario es admin y la contraseña es admin123 . Puede iniciar sesión con el botón en la esquina superior derecha de la interfaz de usuario.
http://www.notodocodigo.com/maven/nexus/
Repositorios
Pinchamos en el menú “Repositories”. Se mostrará una tabla con los repositorios definidos. En la parte superior, se mostrarán unos botones que nos permitirán añadir o eliminar repositorios. En la parte de la derecha, se muestran las urls que habría que configurar en nuestro pom.xml (o preferiblemente en el settings.xml) para conectar con cada repositorio:
Repositorios en Nexus Repositorios en Nexus (pincha para agrandar) La instalación de Nexus viene con unos cuantos repositorios por defecto. Hay cuatro tipos de repositorios:
Virtual Repository → Se utilizan para compatibilidad con versiones antiguas de Maven.
Hosted Repository → Almacén de librerías propias. Por defecto hay tres repositorios creados:
3rd party – donde subiremos las librerías de terceros para que estén disponibles para toda la organización. Un ejemplo de esto, pueden ser las librerías jdbc de Oracle, que por temas de licencia, no están en ningún repositorio público, de modo que nos las bajaríamos manualmente y las subiríamos a nuestro repositorio. Releases – donde almacenaremos las versiones liberadas o cerradas de nuestros proyectos. Snapshots – donde subiremos las versiones en desarrollo de nuestros proyectos. Proxy Repository → Es un enlace o una conexión a un repositorio público. Por defecto vienen tres, el repositorio central de Maven, el de Apache y el de Codehaus.
Group Repository → Agrupa varios repositorios. Se puede definir un repositorio de este tipo que agrupe a todos los demás, de modo, que únicamente necesitaremos conectarnos a éste para tener acceso a todas las librerías. Por defecto viene uno definido, llamado “Public Repositories”. Si lo seleccionamos y pulsamos en la pestaña “Configuration” podemos añadir o eliminar repositorios:
Añadir repositorios al grupo Añadir repositorios al grupo Como se puede ver, en la parte de la derecha aparecen los repositorios disponibles y en la parte de la izquierda, los que están incluidos en el grupo. Pulsando en los botones, se pueden pasar al grupo, o retirarlos del grupo.
Volviendo a los repositorios, nada más desplegar Nexus, hay bajar los índices de los repositorios de tipo proxy, como por ejemplo el repositorio central de Maven. Seleccionamos este repositorio y en la pestaña de configuración, marcamos “Dowunload remote indexes” y salvamos. A continuación refrescamos los índices. Para forzar que descargue los índices, podemos pinchar con el botón derecho cada repositorio y ponerlos fuera de servicio, para de nuevo volver a ponerlos en servicio. Hay que dejar que “respire un poco” la aplicación, porque tarda un poquito en pillar los índices. En la pestaña “Mirrors”, es recomendable seleccionar uno para el repositorio central de Maven.
Subiendo librerías al repositorio “3rd party” Como hemos comentado, éste es el lugar recomendado para subir librerías que no se encuentran en ningún repositorio público. Se pueden subir por línea de comandos desde Maven, de manera similar a como las subimos al repositorio local de usuario:
mvn deploy:deploy-file -DgroupId=
Pero quizás es más interesante y cómodo usar la aplicación de Nexus, que nos permite hacer esto de manera visual. Seleccionaremos el repositorio y pincharemos en la pestaña “Artifact Upload”. Una de las cosas interesantes que podemos hacer al subir un artefacto, es crear un pom.xml con el group id, artifact id, etc. y en el que además definamos las dependencias de dicho artefacto que queremos subir. De este modo, cuando nos bajemos esta librería Maven se descargará también las dependencias transitivas. Seguidamente, subiremos la librería, pulsaremos en “Add Artifact” y finalmente en “Auploads Artifacts”.
Subir artefactos a Nexus Subir artefactos a Nexus Definición de usuarios y roles Se pueden definir privilegios sobre los repositorios (lectura, escritura). También se pueden definir roles, y asignarle privilegios a los roles. Finalmente también se pueden definir usuarios y asignarles los roles que se deseen. De este modo, se puede tener un control total sobre usuarios y niveles de acceso a los repositorios.
Vamos a crear un usuario a modo de ejemplo. Pulsamos en el menú “Users” y a continuación a “New Nexus user”. Indicamos un id, una dirección de correo, un password y seleccionamos en el desplegable al usuario como activo. En el apartado “Role Management” pulsamos el botón “add” para añadir los roles que nos interese, por ejemplo, control total en todos los repositorios:
Roles en Nexus Roles en Nexus De este modo, con ese usuario podremos conectarnos desde Maven y descargarnos librerías, hacer releases o snapshot, etc.
Algunas otras utilidades que ofrece Nexus Nexus dispone de algunas utilidades que pueden ayudar a los desarrolladores a mantenerse informado de los cambios que se producen en el repositorio. En el menú “System Feeds”, se muestran una serie de enlaces de sindicación a los que nos podremos subscribir.
También dispone de un buscador, que nos permitirá encontrar artefactos en los repositorios definidos.
Se pueden definir tareas programadas como la actualización de índices, borrado de caché, etc. También se puede definir un servidor SMPT, para enviar correos a los desarrolladores de manera automática en caso de que falle una tarea programada.
Existe más utilidades. La propia aplicación dispone de una ayuda bastante completa para aprender a sacarle todo el jugo a la aplicación. Por otra parte, en la página de Sonatype, nos podemos descargar un manual bastante completo en pdf de la aplicación
https://blog.moon.cat/instalar-nexus-repository-manager-maven/
http://www.sonatype.org/nexus/2017/02/08/using-nexus-3-as-your-repository-part-1-maven-artifacts/