2017-09-24 17 views
0

mavenアーティファクトのディレクトリを取得してNexus 3にアップロードするツールを開発しようとしています。このツールは機能していますが、パフォーマンスに問題があります。 私のプログラムは、アップロードする必要のあるアーティファクトごとに別々のMavenプロセスを起動します。これらが何らかの形でバッチ処理できるかどうか不思議です。複数のmaven deployコマンドを同じプロセスで実行する方法

mavenコマンドを実行するためにmaven-invokerライブラリを使用しています。

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

この

はアーティファクト deployArtifact法と呼ばれる新しいプロセスが開かれていることたびに
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); 
} 

をアップロードするresposibleクラスで、同じを使用するバッチ全てのアップロードへの道がありますプロセス?

+0

ただし、httpリクエストを使用することはできません。https://support.sonatype.com/hc/en-us/articles/115006744008 – Oleg

答えて

関連する問題