2010-07-13 15 views
7

के माध्यम से नेक्सस में संपूर्ण निर्देशिका अपलोड/डाउनलोड करें क्या यह एक संपूर्ण निर्देशिका अपलोड और डाउनलोड करने के लिए एक नेक्सस रिपोजिटरी सर्वर से/सभी उप-निर्देशिकाओं को अपलोड करना संभव है?मैवेन

+0

पर सविस्तार कि एक मौजूदा होगा मेवेन रेपो या कुछ मनमानी फाइलें? –

+0

नेक्सस सर्वर पर अपलोड करने के लिए, यह मनमाने ढंग से फाइलों के लिए है। सर्वर से डाउनलोड करने के लिए, मुझे लगता है कि यह नेक्सस भंडार से होगा। – Peter

उत्तर

2

आप हमेशा निर्देशिका को ज़िप और ज़िप फ़ाइल के रूप में भेज सकते हैं। इस फ़ोल्डर के उपयोगकर्ता इसे नेक्सस से डाउनलोड कर सकते हैं और निर्भरता का उपयोग करके अनजिप कर सकते हैं: अनपैक करें।

+0

हां, यह निश्चित रूप से ऐसा करने का एक तरीका है लेकिन आवश्यकताओं को पूरी तरह से पूरा नहीं करता है। हालांकि इनपुट के लिए धन्यवाद =) – Peter

+0

अच्छी तरह से, आप मेरे उत्तर को रेट करके मुझे धन्यवाद दे सकते हैं :) – rperez

4

यदि आप वास्तव में फ़ाइलों के पदानुक्रम को तैनात करना चाहते हैं, तो मैंने 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

+0

दिलचस्प, मैं इसे देख लूंगा। धन्यवाद! – Peter

+1

सहायक! मैंने इसे स्थानीय भंडार फ़ोल्डर संरचना में फिट करने के लिए संशोधित किया। https://gist.github.com/aleung/5194777 – aleung

+1

हम लगभग एक वर्ष के लिए @aleung स्क्रिप्ट के एक संशोधित संस्करण का उपयोग कर रहे हैं बिना समस्या के 'maven-metadata.xml' और '.sha' को संभालने के लिए संशोधन और '.md5' फ़ाइलों को फोर्कड गिस्ट में पाया जा सकता है: https://gist.github.com/jakub-bochenski/7802ee7f44b8e3b99bdd69b2ab150e6c –