¿Es posible cargar/descargar un directorio completo y todos los subdirectorios dentro de él a/desde un servidor de repositorio Nexus?Cargar/Descargar todo el directorio a Nexus a través de Maven
Respuesta
Siempre puede comprimir el directorio y enviarlo como un archivo zip. los usuarios de esta carpeta pueden descargarla de Nexus y descomprimir usando la dependencia: descomprimir.
En caso de que realmente desee implementar una jerarquía de archivos, pirateé una solución usando GMaven (groovy embedded in maven).
Usa el siguiente término, suministra algunas propiedades y golpea mvn install
. La carpeta se rastreará y todos los archivos que contiene se implementarán utilizando un artefactoId tomado de la ruta relativa. p.ej.
Dada la carpeta base
c:\a\b\c
el archivo
c:\a\b\c\def\ghi\jkl.mno
tendría el artifactId def-ghi-jkl
y el embalaje mno
, esto puede por supuesto ser cambiado a otra cosa.
La información del repositorio se tomará del pom, por lo que debe proporcionar un elemento de gestión de distribución en el pom.
Aquí está (una gran cantidad de este código se toma de la deploy:deploy-file mojo):
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>folderdeployer</artifactId>
<packaging>jar</packaging>
<version>SNAPSHOT</version>
<properties>
<!-- This is where your artifacts are -->
<deploy.basefolder>c:\temp\stuff</deploy.basefolder>
<!-- This will be used as groupId -->
<deploy.groupId>my.groupid</deploy.groupId>
<!-- this will be used as version -->
<deploy.version>1.2.3</deploy.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>deploy-files</id>
<phase>prepare-package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
<![CDATA[
// read components from plexus container
def layout = session.lookup(
'org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout');
def repoFactory = session.lookup(
'org.apache.maven.artifact.repository.ArtifactRepositoryFactory');
def repository = repoFactory.createDeploymentArtifactRepository(
pom.distributionManagement.repository.id,
pom.distributionManagement.repository.url,
layout, true);
def localRepository = session.localRepository;
def helper =
session.lookup("org.apache.maven.project.MavenProjectHelper");
def afm = session.lookup(
'org.apache.maven.artifact.handler.manager.ArtifactHandlerManager');
def factory = new org.apache.maven.artifact.factory.DefaultArtifactFactory();
factory.class.getDeclaredField("artifactHandlerManager").accessible = true;
factory.artifactHandlerManager=afm;
def deployer = session.lookup(
'org.apache.maven.artifact.deployer.ArtifactDeployer');
// initialize properties
def baseFolder = new File(pom.properties['deploy.basefolder']);
def groupId = pom.properties['deploy.groupId'];
def version = pom.properties['deploy.version'];
// iterate over all files recursively
baseFolder.eachFileRecurse{
if(it.isDirectory())return;
// packaging = file.extension
def packaging = it.name.replaceAll(/.+\./ , '');
// artifactId = file.relativePath.replace '/' , '-'
def artifactId = it.absolutePath
.replace(baseFolder.absolutePath, '')
.substring(1)
.replaceFirst(/\..*?$/ , '')
.replaceAll(/\W+/ , '-');
def artifact =
factory.createBuildArtifact(
groupId, artifactId, version, packaging);
// create pom for artifact
def model = new org.apache.maven.model.Model();
model.setModelVersion("4.0.0");
model.setGroupId(groupId);
model.setArtifactId(artifactId);
model.setVersion(version);
model.setPackaging(packaging);
File pomFile = File.createTempFile("mvndeploy", ".pom");
pomFile.deleteOnExit();
fw = org.codehaus.plexus.util.WriterFactory.newXmlWriter(pomFile);
new org.apache.maven.model.io.xpp3.MavenXpp3Writer().write(fw, model);
org.apache.commons.io.IOUtils.closeQuietly(fw);
def metadata =
new org.apache.maven.project.artifact.ProjectArtifactMetadata(
artifact, pomFile);
artifact.addMetadata(metadata);
// deploy file
deployer.deploy(it, artifact, repository, localRepository);
}
]]>
</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>your repo id here</id>
<url>scp://your.repo.url/here</url>
<layout>default</layout>
</repository>
</distributionManagement>
</project>
EDIT:
elaboré en este on my blog
Interesante, lo investigaré. ¡Gracias! – Peter
¡Útil! Lo modifiqué para adaptarme a la estructura de la carpeta del repositorio local. https://gist.github.com/aleung/5194777 – aleung
Hemos estado usando una versión modificada del script @aleung desde hace casi un año sin problemas Las modificaciones para manejar 'maven-metadata.xml' y '.sha' y los archivos '.md5' se pueden encontrar en la esencia bifurcada: https://gist.github.com/jakub-bochenski/7802ee7f44b8e3b99bdd69b2ab150e6c –
- 1. Error al proxy para maven repo a través de Nexus
- 2. Cargar todo el directorio a través de PHP FTP
- 3. Carga de artefactos a Nexus, sin Maven
- 4. ¿Cómo configuro maven para acceder a maven central si el servidor nexus está inactivo?
- 5. Infraestructura con maven, Jenkins, Nexus
- 6. Generación de UUID a través de Maven
- 7. Lanzamiento de Maven a través de Hudson
- 8. Maven: descargar artefacto y sus deps a un directorio específico
- 9. Usando mvn deploy a través de webdav: creación de directorio
- 10. bucle a través de un directorio de
- 11. usings no utilizados a través de todo el montaje
- 12. ¿Cómo activar el perfil a través de la propiedad maven?
- 13. Cómo cargar el plugin maven al repositorio Nexus?
- 14. maven m2eclipse No se puede actualizar el índice para nexus
- 15. Maven utiliza sólo repositorio central con Nexus
- 16. Despliegue de múltiples JAR de terceros a global (interno) Maven nexus
- 17. ¿Cómo configurar Tomcat para registrar todo a través de syslog?
- 18. Maven desplegar a la ruta de directorio relativo
- 19. Ejecutar pruebas de las clases internas a través de Maven
- 20. ¿Es posible suministrar el archivo context.xml de Tomcat6 a través del plugin de Maven Cargo?
- 21. Identificación de errores CheckStyle a través de Maven CLI
- 22. iteración a través de un directorio con Ant
- 23. distribuir archivos XSD a través de múltiples artefactos Maven
- 24. define el directorio fuente adicional en maven
- 25. Maven - Agregar directorio a classpath mientras se ejecutan las pruebas
- 26. Redirigir todo a index.php
- 27. Iterar a través de cada archivo en un directorio
- 28. autorización del usuario Winform a través de directorio activo
- 29. Crear directorio secundario a través de SQL INSERT usando FileTable
- 30. Android Maven Directorio Estructura
sería eso una ya existente maven repo o algunos archivos arbitrarios? –
Para cargar en el servidor Nexus, esto es para archivos arbitrarios. Para descargar desde el servidor, supongo que esto sería del repositorio de Nexus. – Peter