remote - nexus maven repository
ConfiguraciĆ³n de repositorio remoto privado Maven (3)
He configurado nexus
para reflejar mi repositorio local de ~/.m2/repository.
(en ~/.m2/repository.
) ~/.m2/repository.
Como esta publicación todavía es visitada por mucha gente, creo que sería útil para otros si comparto cómo configuré nexus
como repositorio. gerente. Este procedimiento funciona perfectamente para mí en Ubuntu 12.04
. Aquí está -
1. Descargue nexus-2.11.1-01-bundle.tar.gz o la última versión de nexus oss.
2. Extraiga el archivo tar en su directorio home-
$ tar -xvf nexus-2.11.1-01-bundle.tar.gz
Ahora obtendrá dos directorios: nexus-2.11.1-01
y sonatype-work
en su directorio de inicio.
3. Copie estos dos directorios al directorio /usr/local/
(se pueden copiar a otro lugar) -
$ cp -r nexus-2.11.1-01 /usr/local/
$ cp -r sonatype-work /usr/local/
Los archivos de configuración / ejecutables relacionados con nexus se almacenan en el directorio nexus-2.11.1-01
y el archivo jar mencionado en pom.xml
se almacena en el directorio sonatype-work
.
Estos archivos jar son un espejo de su ~/.m2/repository
. La primera vez que emita un comando mvn package
, todos los mvn package
jar
se almacenan aquí. Después de eso, cuando mvn package
emitir el mvn package
todos los mvn package
se descargarán del repositorio de nexus en lugar de descargarlos del repositorio central.
4. Vaya al directorio /usr/local/
$ cd /usr/local/
5. Crear un enlace a nexus-2.11.1-01
-
$ sudo ln -s nexus-2.7.0-06 nexus
6. Ahora para ejecutar nexus escriba lo siguiente en la terminal:
$ bash nexus/bin/nexus console
Aquí nexus se adjunta con su consola. Si cierras la consola, el servidor nexus se cerrará. Cuando intenta ejecutar nexus para una máquina de servidor Ubuntu, puede usar la screen.
Nota: Al intentar ejecutar nexus utilizando el comando anterior, pueden surgir 2 problemas. Si no encuentra ningún problema, omita los siguientes 2 pasos (pasos 7 y 8)
7. El primer problema puede ocurrir debido a un permiso insuficiente. Lea el mensaje de error y siga los pasos necesarios. Pero como solución rápida puedes hacer esto.
$ sudo chmod -R 777 nexus-2.11.1-01/
$ sudo chmod -R 777 sonatype-work/
8. Si está utilizando una versión jdk
inferior a java 7, puede aparecer el siguiente mensaje de error:
envoltura Lanzando un JVM ... wrapper | JVM salió al cargar la aplicación. jvm 1 | Excepción en el hilo "main" java.lang.UnsupportedClassVersionError: org / sonatype / nexus / bootstrap / jsw / JswLauncher: Major.minor no admitido versión 51.0
En este caso, use jdk7 para ejecutar el comando mencionado en el paso 6. En Ubuntu es bastante fácil. Suponiendo que tienes dos jdk - jdk6 y jdk7. Su proyecto se ejecuta en jdk6. Entonces solo para ejecutar nexus puede hacer esto desde su terminal (asumiendo su jdk7 en el directorio /usr/lib/jvm/jdk1.7.0_45) -
$ export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
$ export PATH=$JAVA_HOME/bin:$PATH
9. Ahora en el navegador escriba la dirección - http://localhost:8081/nexus/ . Si los pasos 1 a 6 (si ocurrieron errores, entonces los pasos 1 a 8) se realizan perfectamente, puede encontrar con éxito la pantalla de inicio de sesión. El nombre de usuario de inicio de sesión predeterminado es - admin y la contraseña es - admin123
10. Detener el nexo. Simplemente cierre el terminal o presione Ctrl + C en el terminal del paso 6. En su directorio ~/.m2
cree un archivo vacío llamado - settings.xml
. Copie el siguiente contenido en este archivo settings.xml
-
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
11. Y agregue las siguientes líneas en el archivo pom.xml
su proyecto:
<distributionManagement>
<snapshotRepository>
<id>my-snapshots</id>
<name>My internal repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>my-releases</id>
<name>My internal repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
Estoy tratando de configurar un repositorio remoto privado para nuestro equipo. Ahora el repositorio sirve a lo siguiente con lo que he intentado hasta ahora:
Cuando se emite un '' mvn compile '', busca las dependencias en "~ / .m2". Si no se encuentra allí, entonces va al repositorio privado remoto y cuando las dependencias aún están ausentes aquí, va al repositorio central.
Antes de la compilación, tengo que poner todas las dependencias en nuestro repositorio privado (y remoto) junto con la suma de comprobación y los metadatos.
Cuando necesitamos un artefacto (por ejemplo, spring-mvc), debemos ponerlo en el repositorio privado remoto junto con todas las dependencias de ese artefacto (spring-mvc). En este caso, "spring-mvc" se descarga desde nuestro repositorio privado remoto. Pero las dependencias de "spring-mvc" no se descargan de nuestro repositorio privado remoto. Se descargan desde el repositorio central.
Ahora lo que estoy tratando de hacer es -
Configurar un repositorio remoto privado ''R'' de tal manera que no tenga que ponerle todas las dependencias a mano. Cuando se emite una "compilación mvn" en primer lugar; las dependencias se buscan en "~ / .m2" si no se encuentran y luego van al repositorio remoto privado ''R''. Si las dependencias se encuentran en ''R'', entonces "~ / .m2" lo obtendrá de ''R''. Si las dependencias no se encuentran en ''R'', estas dependencias se descargan de los repositorios centrales y mantienen las dependencias en ''R'' para futuros usos. Después de eso ''~ / .m2'' los obtendrá de ''R''. Aquí no necesito poner las dependencias en nuestro repositorio privado remoto ''R'' a mano.
''~ / .m2'' obtendrá todas las dependencias de "spring-mvc" (que es la dependencia principal mencionada en el pom.xml de mi proyecto) del repositorio privado remoto ''R'' y ''R'' las obtendrá del repositorio central respectivo .
¿Alguien puede sugerir alguna forma o tutorial como referencia para cumplir con estos dos objetivos anteriores? Gracias por adelantado.
EDITAR: He intentado con la respuesta de Nathaniel Waisbrot y nexus-2.7.0-06-bundle. Después de horas de esfuerzos, puedo configurarlo mientras uso jre-7. Con jre-6, nexus no se puede iniciar. Pero nuestro proyecto se implementa con JDK-6. No queremos cambiar la versión actual de jre
. Con jre-6 apache-archiva
está bien. Pero no estoy seguro de poder alcanzar todos los objetivos en la sección anterior. ¿Hay algún usuario / experto de archiva
que pueda decirme si puedo cumplir estos objetivos en la sección anterior?
Lo que ha descrito es prácticamente la configuración predeterminada de la mayoría de los administradores de repositorios, incluido Archiva. ¿Ayuda lo siguiente a configurarlo para que lo use Maven?
http://archiva.apache.org/docs/1.3.6/userguide/using-repository.html
Sonatype Nexus hace todo lo que desea, necesita muy poca configuración para lo que está preguntando y tiene una interfaz agradable. Hay algunos detalles sobre la configuración básica en la pregunta " Repositorio interno de Maven, ¿es realmente tan difícil? "
Básicamente, puede configurar Nexus como un repositorio de almacenamiento en caché: su cliente Maven solo visitará el repositorio interno. Cuando el repositorio interno no puede encontrar un artefacto, va a la Central (o a cualquier otro repositorio externo que defina), lo busca para usted y lo almacena para más adelante.
Esto es genial porque si quieres hacer la transición de un entorno de agarrar lo que sea que quieras, libre para todos a un entorno cerrado, Nexus te lo pone fácil. La configura para extraer desde Central, ejecuta su compilación desde una máquina limpia (lo que obliga a Nexus a ingerir todas las dependencias centrales actuales) y luego desactiva la función proxy-repo (por lo que cualquier dependencia nueva / modificada será administrada por los devops).