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-a
isso é 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?