MAVEN-RELEASE-PLUGIN: O desempenho falha com 'Diretório de trabalho “… Workspace Target Checkout Workspace” não existe!'
-
25-09-2019 - |
Pergunta
Eu tenho o Maven Project que falha quando a liberação: o desempenho é chamado, embora a liberação; prepare as obras conforme o esperado.
Encontrei o relatório de bug (abaixo) que certamente parece se parecer com o problema que tenho, mas não tenho certeza de que entendi o problema:Mrelease516
As últimas linhas de saída que recebo:
[INFO] Executing: cmd.exe /X /C "p4 -d E:\hudson\jobs\myHudsonJob\workspace\target\checkout -p 1.1.1.1:1111: client -d myProjectWorkspace-MavenSCM-E:\hudson\jobs\myHudsonJob\workspace\target\checkout"
[INFO] Executing goals 'deploy'...
[WARNING] Base directory is a file. Using base directory as POM location.
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error executing Maven.
Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!
Ao ler o relatório de bug, a possível causa do erro está relacionada à estrutura dos meus módulos, tentei delineá -lo abaixo:
/workspace | |+ pom.xml (root pom whose parent is the build pom, | calling release:perform on this pom) | [Modules: moduleA and moduleB] | |- moduleA |+ pom.xml (parent is also build pom) |+ build/pom.xml (the build pom - no custom parent) |- moduleB |+ pom.xml (parent is build pom)
Parece que o POM da raiz deve estar em algum diretório comum dentro do 'espaço de trabalho' do erro, mas tentou isso e não funciona, nem faz sentido por que eu preciso.
O que faz o aviso O diretório base é um arquivo Quer que eu faça?! Então ele acha que o diretório base é área de trabalho O que significa que o diretório de trabalho não é encontrado ... alguma idéia?
Desde já, obrigado.
EDITAR:
Tendo verificado a configuração do SCM, tudo parece bom para mim ... em cada módulo e o pom da raiz que eu tenho:
<scm>
<connection>
scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom
</connection>
<developerConnection>
scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom
</developerConnection>
</scm>
Editar 2:
Talvez eu tenha atingido Mrelease-261?
Solução
Eu consegui isso funcionando usando uma versão mais recente do plug -in de liberação. O maven Super Pom tem uma dependência da v2.0 do plug -in de liberação definido. Se você não substituir isso, a versão será usada.
Você pode especificar uma versão mais recente quando você executa o plugin
mvn org.apache.maven.plugins:maven-release-plugin:2.2.1:perform
Ou você pode substituir a versão de dependência em seu pom
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.1</version>
</plugin>
Outras dicas
Não tenho certeza se você está enfrentando Mrelease-516 (que é sobre release:prepare
). No entanto, eu me pergunto se você tem correto <scm>
informações em cada pom. Você pode confirmar isso?
Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist!
Acabei de ver a linha acima em seu log. Parece que você tem uma configuração de caminho parafusos em algum lugar. Você substitui o espaço de trabalho em algum lugar? Verifique sua configuração e tente eliminar o máximo possível as configurações opcionais.
No meu caso, os mesmos sintomas acabaram sendo o resultado de um bug na plugin de liberação maven: 2.2.1. Ver Mrelease-705.
Então, para me livrar do erro, tenho que colocar isso no pai POM:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0</version>
</plugin>
</plugins>
</build>
Este erro estava ocorrendo para nós
Working directory E:\Data\myproject\target\checkout does not exist!
Estamos no meio de uma grande transição de ferramentas de servidor e maven release:prepare
Parecia estar falhando em silêncio, alegando que as tags e as alterações do número da versão foram pressionadas sem erro. No entanto, após algumas pesquisas, essas coisas só foram comprometidas com o repositório local do Git, não empurradas - mesmo que o release:prepare
estava executando comandos para realizar um empurrão, mas nunca relatou um fracasso - mesmo com o Maven -e
e -X
Parâmetros da linha de comando.
Estamos usando o MAVEN 3.3.9, o MAVEN Liberação Plugin 2.5.3 e o GIT Client 2.9.2.
Nossa solução final foi para adicionar a (ou correto a definição, conforme seu caso) ~\.m2\settings.xml
Arquivo para o nosso servidor Git (Origin Master), incluindo nome de usuário e senha com privilégios para empurrar tags (além de pressionar para o Master). o id
Na definição do servidor para o servidor Git precisava ser o nome do host do Git Server:
<servers>
<server>
<id>git-server</id>
<username>dan</username>
<password>changeit</password>
</server>
<servers>
Com esta atualização, a tag é concluída no servidor e o checkout ocorreu com sucesso.