Usando o maven-lançamento-plugin para marcar e se comprometer com não-origin
-
26-09-2019 - |
Pergunta
Quando faço um lançamento do meu projeto, quero compartilhar a fonte com um grupo mais amplo de pessoas do que normalmente durante o desenvolvimento. O código é compartilhado por meio de um repositório Git. Para fazer isso, usei o seguinte:
- Remote Public Repository - O código liberado é pressionado aqui, a cada semana (mais ou menos (http://example.com/public)
- Remoto Private Repository - O código não lançado é empurrado aqui, mais do que diariamente (http://example.com/private)
No meu repositório Git local, tenho os seguintes controles remotos definidos:
origin http://example.com/private
public http://example.com/public
Atualmente, estou tentando configurar a plugina de liberação do Maven para gerenciar a versão das compilações e gerenciar a marcação e o empurrão do código para o repositório público. No meu pom.xml, listei ou003Cscm/> do seguinte modo:
<scm><connection>scm:git:http://example.com/public</connection></scm>
(Remover esta linha causará liberação de MVN: Prepare -se para falhar)
No entanto, ao ligar
mvn release:clean release:prepare release:perform
MAVEN liga
git push origin tagname
em vez de empurrar para o URL especificado no POM.
Portanto, as perguntas são:
- Prática recomendada: devo apenas marcar e cometer no meu repo (origem) privado e pressionar para o público manualmente?
- Posso fazer o Maven empurrar para o repositório que eu escolho, em vez de não formar a origem? Eu senti que isso estava implícito pelo requisito dou003Cconnection/> elemento emu003Cscm/> .
Solução
A liberação quando o repositório SCM.Connection é diferente da origem é corrigida na versão 2.0 do maven-release-plugin (ou os plugins Git associados). Para mudar para esta versão, adicionei o seguinte ao meu POM:
<project>
...
<build>
<plugins>
...
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0</version>
</plugin>
...
</plugins>
</build>
...
</project>
Aliás, o Maven estava pegando a versão 2.0-beta-9 de liberação de maven como sendo mais recente que 2.0.