के माध्यम से नेक्सस में संपूर्ण निर्देशिका अपलोड/डाउनलोड करें क्या यह एक संपूर्ण निर्देशिका अपलोड और डाउनलोड करने के लिए एक नेक्सस रिपोजिटरी सर्वर से/सभी उप-निर्देशिकाओं को अपलोड करना संभव है?मैवेन
मैवेन
उत्तर
आप हमेशा निर्देशिका को ज़िप और ज़िप फ़ाइल के रूप में भेज सकते हैं। इस फ़ोल्डर के उपयोगकर्ता इसे नेक्सस से डाउनलोड कर सकते हैं और निर्भरता का उपयोग करके अनजिप कर सकते हैं: अनपैक करें।
यदि आप वास्तव में फ़ाइलों के पदानुक्रम को तैनात करना चाहते हैं, तो मैंने GMaven (मैवेन में एम्बेडेड ग्रोवी) का उपयोग करके एक समाधान को हैक किया।
नीचे दिए गए पोम का उपयोग करें, कुछ गुणों की आपूर्ति करें और mvn install
दबाएं। फ़ोल्डर को क्रॉल किया जाएगा और इसके अंदर की सभी फाइलें सापेक्ष पथ से ली गई आर्टिफैक्ट आईडी का उपयोग करके तैनात की जाएंगी। जैसे
आधार फ़ोल्डर
c:\a\b\c
फ़ाइल
c:\a\b\c\def\ghi\jkl.mno
को देखते हुए artifactId def-ghi-jkl
और पैकेजिंग mno
होगा, यह निश्चित रूप से कुछ और करने के लिए बदला जा सकता है।
भंडार जानकारी पोम से ली जाएगी, इसलिए आपको पोम में वितरण प्रबंधन तत्व की आपूर्ति करने की आवश्यकता है।
यहाँ यह (इस कोड का एक बहुत deploy:deploy-file मोजो से लिया जाता है) है:
<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>
संपादित करें:
मैं इस on my blog
दिलचस्प, मैं इसे देख लूंगा। धन्यवाद! – Peter
सहायक! मैंने इसे स्थानीय भंडार फ़ोल्डर संरचना में फिट करने के लिए संशोधित किया। https://gist.github.com/aleung/5194777 – aleung
हम लगभग एक वर्ष के लिए @aleung स्क्रिप्ट के एक संशोधित संस्करण का उपयोग कर रहे हैं बिना समस्या के 'maven-metadata.xml' और '.sha' को संभालने के लिए संशोधन और '.md5' फ़ाइलों को फोर्कड गिस्ट में पाया जा सकता है: https://gist.github.com/jakub-bochenski/7802ee7f44b8e3b99bdd69b2ab150e6c –
पर सविस्तार कि एक मौजूदा होगा मेवेन रेपो या कुछ मनमानी फाइलें? –
नेक्सस सर्वर पर अपलोड करने के लिए, यह मनमाने ढंग से फाइलों के लिए है। सर्वर से डाउनलोड करने के लिए, मुझे लगता है कि यह नेक्सस भंडार से होगा। – Peter