Как запускать команды maven в качестве фонового процесса в Power Shell - PullRequest
1 голос
/ 06 мая 2019

У меня есть несколько проектов весенней загрузки, которые мне нужно запустить с помощью Power Shell в jenkins. Я могу сделать это частично на моем локальном компьютере с помощью следующей команды -

mvn -f $repoLocation -D "spring-boot.run.profiles=e2e" -DskipTests=true spring-boot:run

Проблема в том, что, как только запускается первый проект, он просто продолжает его ждать и не переходит к следующему. То есть он не запускает эту команду как фоновый процесс.

Есть предложения, как я могу это сделать? Мне нужно запустить проекты в порядке, указанном в массиве $repos.

Примечание. Я попытался использовать start process, как показано ниже, но он просто вызвал его в новой командной строке и смог запустить только первое, аналогично тому, что я смог достичь.

foreach ($element in $repos) {
    $repoLocation = $localPath + $element.Split('/')[-1]
    Write-Host('Maven build for ' + $repoLocation)
    start-process -FilePath mvn -ArgumentList ("-f $repoLocation -D `"spring-boot.run.profiles=prod`" -DskipTests=true spring-boot:run") -Wait
    #mvn -f $repoLocation -D "spring-boot.run.profiles=prod" -DskipTests=true spring-boot:run
    Write-Host('Maven build completed for ' + $repoLocation)
    $repoLocation = ''
}

1 Ответ

1 голос
/ 06 мая 2019

Я собираюсь сослаться на следующее сообщение в блоге ...

Параллельная обработка с PowerShell

Вы можете пропустить разделы на Powershellрабочие места.Ваша работа может выглядеть примерно так ...

## Using Jobs...
$repositories = $(...)

foreach ($repository in $repositories) {
    Start-Job `
        -Name "build-${repository}" `
        -Scriptblock {
            param($repository)
            mvn --file .\${repository}\xml.pom -D "spring-boot.run.profiles=e2e" -DskipTests=true spring-boot:run } `
        -ArgumentList $repository
}

Возможно, ваш звонок от maven будет другим, но вы поймете, куда я иду.Start-Job запускает асинхронную операцию.

Существует множество материалов о заданиях Powershell, я не буду повторять это здесь.

Рабочие процессы Powershell (также подробно описано в статье)может также удовлетворить ваши потребности.Если вы покопаетесь немного глубже в пространстве распараллеливания, вы начнете читать о пространствах выполнения.Вообще говоря, мне нравятся runspaces, но не для того, что вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...