我正在尝试开发一个获取maven工件目录并将其上传到Nexus 3的工具。该工具正在运行,但我遇到了性能问题。 我的程序为每个必须上传的工件启动一个单独的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);
}
}
这是可以上传工件的类
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 :(得分:0)
不是maven-deploy,但如果你愿意,可以使用它:https://github.com/DarthHater/nexus-repository-import-scripts
我认为它完成了你想做的事。