Pergunta

Tenho recentemente se juntou a um projeto que está usando vários projetos diferentes. Muitos desses projetos são dependendo uns dos outros, usando arquivos JAR do outro projeto incluído em uma biblioteca, assim quando você mudar um projeto, você tem que, em seguida, saber qual outro uso Projest-lo e atualizá-los também. Eu gostaria de fazer isso muito mais fácil, e estava pensando em fundir todo o código deste java em um projeto em pacotes separados. É possível fazer isso e só então implantar alguns dos pacotes em um frasco. Gostaria de não implementar apenas parte dela, mas foram sassked se isso é possível.

Existe uma maneira melhor de lidar com isso?

Foi útil?

Solução

Abordagem 1: Usando Hudson

Se você usar um servidor de integração contínua como Hudson , em seguida, você pode configurar a montante / projectos a jusante (ver Terminologia ).

Um projeto pode ter um ou vários projcets jusante. Os projectos a jusante são adicionados à fila de construção se o projeto atual é construído com sucesso. É possível configurar que ele deve adicionar o projeto a jusante para a fila de chamada, mesmo se o projeto atual é instável (o padrão é desligado).

O que isto significa é que, se alguém cheques em algum código em um projeto, pelo menos você iria ficar alerta precoce se quebrou outra constrói.

Abordagem 2: Usando Maven

Se os projetos não são muito complexos, então talvez você poderia criar um projeto principal, e fazer estes módulos subprojetos filho deste projeto. No entanto, mutilando um projeto em um formulário que Maven gosta pode ser bastante complicado.

Outras dicas

Se você usar o Eclipse (ou qualquer IDE decente) você pode apenas fazer um projeto de depender de outro, e fornecer esse aspecto configuração no seu SVN, e assumir checkouts em seus scripts de construção.

Note que, se um projeto depende de uma determinada versão de um outro projeto, o arquivo JAR é uma maneira muito mais simples de gerenciar isso. A refatoração grande poderia significar imediatamente muito trabalho em todos os outros projetos para consertar as coisas, enquanto você poderia simplesmente colocar o novo frasco para cada projeto como necessário e fazer o trabalho de migração seguida.

Eu acho que, provavelmente, tudo depende do projeto específico, mas eu acho que eu iria manter todos os projetos separados. Isto ajuda manter todo o sistema de baixo acoplamento. Você pode usar uma ferramenta como maven para ajudar a gerenciar todas as dependências entre os projetos. Gerenciamento de dependências como este é um dos principais pontos fortes do Maven.

Usando Ant como sua ferramenta de compilação, você pode empacotar seu projeto qualquer forma que você quiser. No entanto, deixando partes de seu código fora da distribuição parece que ele iria ser propenso a erros; você pode acidentalmente deixar de fora as classes necessárias (presumivelmente, todas as suas classes são necessários).

Em relação a manter seu código em diferentes projetos, eu tenho um guia solto. Mantenha o código que muda juntos no mesmo projeto e empacotá-lo em seu próprio arquivo jar. Isso funciona melhor quando algum do seu código pode ser quebrada em bibliotecas de utilitários que a mudança com menos frequência do que a sua aplicação principal.

Por exemplo, você pode ter uma aplicação onde você gerou classes de cliente de serviço web a partir de um WSDL de serviços web (usando algo como a biblioteca Axis). A interface de serviço web provavelmente vai mudar com freqüência, para que você não quer ter a etapa de regeneração reoccurring o tempo todo em sua principal compilação do aplicativo. Criar um projeto separado para esta peça de forma que você só tem que recriar as classes de cliente de serviços da Web quando as mudanças WSDL. Criar um frasco separado e usá-lo em sua aplicação principal. Este estilo também permite que outros projetos para reutilizar esses módulos de serviços públicos.

Ao seguir este estilo, você deve colocar um número de versão na jarra manifesto para que você possa manter o controle de quais aplicativos estão usando as versões do seu módulo. Dependendo de quão longe você quer tirar isso, você também pode manter um arquivo de texto no frasco que detalha as mudanças que ocorreram para cada revisão (muito parecido com uma biblioteca de código aberto).

É possível (tivemos a mesma situação há alguns anos). Quão difícil ou fácil vai ser depende do seu IDE (refatoração, a fusão, a organização novo projeto) e ferramenta de construção (implantação). Usamos IDEA como IDE e Ant como ferramenta de construção e não foi muito difícil. Um domingo (ninguém trabalho + cometer), 2 pessoas em um computador.

Eu não tenho certeza que você entende por

"única implantar alguns dos pacotes em um frasco"

Eu acho que você vai precisar de todos eles em tempo de execução, não vai? Como eu entendi que eles dependem uns dos outros.

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