Ivy: usando revisões dinâmicas

Estou tendo problemas para entender como usar revisões dinâmicas deHera efetivamente em meus projetos Java.

Atualmente, tenho o seguinte layout:

lib-a
revision: 1.0.0
status: release
dependencies: none

lib-b
revision: 2.0.0
status: release
dependencies: lib-a, rev 1.0.0

project-a
revision: 3.0.0
status: release
dependencies: lib-b, rev 2.0.0

project-b
revision: 4.0.0
status: release
dependencies: lib-b, rev 2.0.0

Isso significa que eu sempre mantenho o status pararelease e use números de versão explícitos. Se eu mudasselib-a durante o desenvolvimento, digamoslib-aisso é bem doloroso.

Eu salvo as alterações nolib-a, atualize a revisão no arquivo ivy para1.0.1 para uma pequena mudança. Então eu preciso atualizar as dependências da lib-b para anunciar a revisão 1.0.1 da lib-a. Agora eu poderia atualizar a revisão delib-b e tambémproject-a Porqueproject-a é o executável e contém testes de integração que preciso executar.

A segunda maneira é republicarlib-b com dependências atualizadas, mas mesma versão. Isso geralmente funciona com a formiga na linha de comando, mas não para o NetBeans comhera-feijão plugar. Eles ainda usam uma versão em cache do arquivo ivy delib-b. Então eu preciso limpar o cache local para que ele funcione.

Eu uso um comumbuild-ivy.xml script ant que está no nosso repositório SVN para todos os projetos. Cada projeto tem umbuild.xml na raiz do projeto que na maioria das vezes simplesmente inclui obuild-ivy.xml. Às vezes, as tarefas necessárias são adicionadas ou substituídas. Acabei de lerAqui eAqui que a solução pode estar usando revisões dinâmicas. Tanto quanto eu entendo, gostaria de definir a revisão em todos os arquivos de hera paraintegration-latest e defina o status em todos os arquivos ivy paraintegration. Então, a hera sempre resolveria a versão mais recente automaticamente. Mas o que eu definiria a revisão dos meus módulos? Omitir completamente? Como eu criaria uma versão de lançamento? Preciso alterar todos os arquivos hera e definir o status pararelease ou realizaria uma tarefa de entrega antes de publicar um módulo sobrescrevendo o status pararelease se possível?

questionAnswers(1)

yourAnswerToTheQuestion