MAVEN-RELEASE-PLUGIN: O desempenho falha com 'Diretório de trabalho “… Workspace Target Checkout Workspace” não existe!'

StackOverflow https://stackoverflow.com/questions/2804294

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top