2017-09-24 2 views
0

J'essaye de développer un outil qui obtient un répertoire d'artefacts de maven et les télécharge au Nexus 3. L'outil fonctionne mais j'ai un problème de performance. Mon programme lance un processus Maven séparé pour chaque artefact qui doit être téléchargé. Je suis curieux de savoir si ceux-ci pourraient être groupés d'une manière ou d'une autre. J'utilise la bibliothèque maven-invoker pour exécuter des commandes maven.Comment exécuter plusieurs commandes de déploiement de maven sur le même processus

public class MavenUploader { 

private final MavenDeployer mavenDeployer; 

@Inject 
public MavenUploader(MavenDeployer mavenDeployer) { 
    this.mavenDeployer = mavenDeployer; 
} 

@Override 
public void uploadToRepository(Path pathToUpload) { 
    try (Stream<Path> files = Files.walk(pathToUpload)){ 
     files.forEach(mavenDeployer::deployArtifact); 
    } catch (IOException e) { 
     throw new UncheckedIOException(e); 
    } 
} 

C'est la classe qui resposible pour télécharger les artefacts

import org.apache.maven.shared.invoker.*; 

public class MavenDeployer { 

private final InvocationRequest invocationRequest; 
private final Invoker invoker; 

@Inject 
public MavenDeployer(InvocationRequest invocationRequest,     
        Invoker invoker) { 
    this.invocationRequest = invocationRequest; 
    this.invoker = invoker; 
} 

public void deployArtifact(Path pathToPom, String commandToExecute) { 
    invocationRequest.setGoals(Collections.singletonList(commandToExecute)); 
    InvocationResult invocationResult = invoker.execute(invocationRequest); 
} 

pour chaque fois que la méthode deployArtifact appelé nouveau processus est ouvert, il est un moyen de traitement par lots tous les ajouts d'utiliser le même processus?

+0

Ne le pensez pas, mais vous pouvez utiliser les requêtes http https://support.sonatype.com/hc/fr-fr/articles/115006744008 – Oleg

Répondre