2017-09-24 102 views
0

我正在尝试开发一个获取maven工件目录并将其上传到Nexus 3的工具。该工具正在运行,但我遇到了性能问题。 我的程序为每个必须上传的工件启动一个单独的maven进程。我很好奇这些工具是否可以批量生成。如何在同一个进程上执行几个maven部署命令

我正在使用maven-invoker库来执行maven命令。

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); 
    } 
} 

这是resposible上传文物

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); 
} 

各该deployArtifact方法称为新的进程打开时为类,有一种方法来批量所有上传使用相同处理?

+0

不要这么想,但是你可以使用http请求https://support.sonatype.com/hc/en-us/articles/115006744008 – Oleg

回答

相关问题