Criando Construções Herméticas para o Maven

Eu estou tentando criar uma maneira em que as construções herméticas podem ser alcançadas enquanto ainda dependemos de dependências SNAPSHOT em seu projeto.

Para fins de exemplo, digamos que eu tenha um projeto que tenha uma estrutura de dependência como esta:

             ┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
             └ thing-3.1-SNAPSHOT ── gizmo-6.1.3-SNAPSHOT

O que eu gostaria de fazer é resolver todas as dependências do SNAPSHOT localmente para algo que está relacionado à minha versão atual e, em seguida, implantá-las como lançamentos no repositório de lançamentos do Nexus. Nem todas essas dependências são internas, então não posso simplesmente fazer uma liberação em cada uma delas.

Então, neste exemplo,other-1.2-SNAPSHOT se tornaria algo comoother-1.2-mine-1.2.3 ething-3.1-SNAPSHOT se tornariathing-3.1-mine-1.2.3. Isso é relativamente trivial em cerca de 60 linhas de python.

O problema, no entanto, está na resolução de SNAPSHOTs transitivos para versões concretas. Então eu também preciso convertergizmo-6.1.3-SNAPSHOT paragizmo-6.1.3-mine.1.2.3 e temthing-3.1-mine-1.2.3 depende disso.

Este é apenas um exemplo de uma maneira de alcançar o que eu quero. O objetivo é que daqui a um ano ou dois, eu possa fazer o checkout do meu release para a versão 1.2.3 e ser capaz de rodarmvn clean package ou algo semelhante sem ter que se preocupar em resolver dependências SNAPSHOT de longa data.

É importante que este ramo seja compilável e não apenas retenha todas as dependências usando algo como ojar-and-dependencies funcionalidade do plugin de montagem. Gostaria de poder modificar os arquivos de origem e criar outra versão (por exemplo, aplicar um hotfix).

Assim,

Existe algo assim disponível que seja capaz de converter dependências SNAPSHOT de forma recursiva para ser concreto?Existem plugins que gerenciam esse tipo de coisa para você? O plugin de lançamento tinha promessa com algumas opções de configuração em seubranch objetivo, mas não resolve deps externos na medida em que eu quero.Existem outras técnicas disponíveis para criar o Maven hermético?

questionAnswers(2)

yourAnswerToTheQuestion