Ist es möglich, ein ganzes Verzeichnis und alle darin enthaltenen Unterverzeichnisse auf einen Nexus-Repository-Server hochzuladen/herunterzuladen?Hochladen/Herunterladen des gesamten Verzeichnisses zu Nexus über Maven
Antwort
Sie können das Verzeichnis immer komprimieren und es als Zip-Datei versenden. die Benutzer dieses Ordners können es von Nexus herunterladen und entpacken mit Abhängigkeit: entpacken.
Für den Fall, dass Sie tatsächlich eine Hierarchie von Dateien bereitstellen möchten, habe ich eine Lösung mit GMaven gehackt (groovy in Maven eingebettet).
Verwenden Sie die Pom unten, geben Sie ein paar Eigenschaften und drücken Sie mvn install
. Der Ordner wird gecrawlt und alle darin enthaltenen Dateien werden mit einer artifactId aus dem relativen Pfad bereitgestellt. z.B.
der Basisordner Gegeben
c:\a\b\c
die Datei
c:\a\b\c\def\ghi\jkl.mno
die artifactId def-ghi-jkl
und die Verpackung mno
, änderte sich dies auf etwas anderes sein kann natürlich hätte.
Die Repository-Informationen werden vom Pom übernommen, daher müssen Sie ein DistributionManagement-Element im Pom bereitstellen.
Hier ist es (viele dieser Code wird aus dem deploy:deploy-file mojo genommen):
<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:
ich auf diesem on my blog
erarbeitetInteressant, ich werde es untersuchen. Vielen Dank! – Peter
Hilfreich! Ich habe es so modifiziert, dass es der lokalen Repository-Ordnerstruktur entspricht. https://gist.github.com/aleung/5194777 – aleung
Wir verwenden seit fast einem Jahr eine modifizierte Version von @aleung Script, ohne Probleme Die Änderungen, um 'maven-metadata.xml' und '.sha' zu behandeln und ".md5" -Dateien können im gegabelten Text gefunden werden: https://gist.github.com/jakub-bochenski/7802ee7f44b8e3b99bdd69b2ab150e6c –
- 1. Umleiten des gesamten Verzeichnisses außer einem (htaccess)
- 2. Maven/Nexus - Automatisches Abhängigkeitsupdate
- 3. Ivy über Nexus Proxy
- 4. Nexus und Maven bauen
- 5. Um Maven zu konfigurieren, um das zentrale Maven-Repository anstelle des Nexus zu konsultieren
- 6. über nexus
- 7. Ignorieren eines gesamten Verzeichnisses und Unterverzeichnisse bei CVS-Commit
- 8. Fehler beim Proxy-Zugriff auf maven Repo über Nexus
- 9. Maven - Nexus: abhängige Projekte finden
- 10. NSFileManager Inhalt des Verzeichnisses löschen
- 11. Erstellen eines Zip-Archivs des maven "target" -Verzeichnisses
- 12. Maven Einstellungen über SSO?
- 13. Pfad des lokalen Verzeichnisses
- 14. Abrufen des übergeordneten Verzeichnisses des Skripts
- 15. Maven verwendet nur zentrales Repository mit Nexus
- 16. 405 Fehler auf Maven Build zu Nexus 3
- 17. Gradle Upload android Anwendung apk zu maven Repo (Nexus)
- 18. Aktualisierung des Nexus OSS 3.0-Repositorys
- 19. Limit-Größe des Cache-Verzeichnisses
- 20. Jenkins Maven bereitstellen jar nexus - Artefakt Namensgebung
- 21. Download Kriegsdatei von Nexus mit Maven
- 22. Kopieren gesamten Inhalt eines Verzeichnisses auf einen anderen mit PHP
- 23. Proxy von org-apache-maven nur in Nexus
- 24. Wie erzwingen Sonatype Nexus zu aktualisieren?
- 25. Auswählen des richtigen Lucene-Verzeichnisses
- 26. Durchforsten des Inhalts des aktuellen Verzeichnisses
- 27. Hinzufügen des gesamten Arrays zu nsdictionary
- 28. Liste Inhalt des Verzeichnisses (php)
- 29. vagrant.d außerhalb des Home-Verzeichnisses
- 30. Struktur des IMG-Verzeichnisses react.js
, dass eine bestehende wäre Maven Repo oder einige beliebige Dateien? –
Für das Hochladen auf den Nexus-Server gilt dies für beliebige Dateien. Zum Herunterladen vom Server, denke ich, würde dies vom Nexus-Repository stammen. – Peter