Compilando projetos com dependência circular

6 respostas
R

Dae pessoal,

Estou querendo resolver um problema de compilação de dois projetos com dependência circular.

*Por favor desconsiderem o problema da dependência circular em si e foquem no problema em compilar projetos com isso.

Exemplo:

Proj1
Class1 {
Class2 c2;
}

Proj2
Class2 {
Class1 c1;
}

Eclipse/JDT, quando configurado para apenas para mostrar referências circulares como WARNs e não como ERRORs, resolve esse problema de compilação.

O que eu gostaria de saber é como fazer isso fora do eclipse.

Alguém sabe como fazer ou onde posso encontrar esse material específico?

Agradeço desde já qualquer ajuda

Abraços

6 Respostas

R

Bem, você está querendo resolver um problema de referência circular, mas quer que desconsideremos o problema de referência circular? Isso sim é problema de referência circular.

Bem, tirando as piadas:

Cara, com isso você está simplesmente jogando a sujeira pra debaixo do tapete. Se você tem referências circulares, eu acredito fortemente que você deva refatorar o seu código e retirar isso. Eu acho muito difícil você realmente precisar disso na maneira que você está fazendo.

R

Cara, não tem como. A compilação é um processo linear, portanto, as dependências sempre devem ocorrer em árvore, caso contrário, é um problema de ovo/galinha.
O que acontece no Eclipse é que, por default, ele vai compilando conforme você vai desenvolvendo. O que deve ter acontecido é que você deve ter começado a desenvolver o Projeto1, criou o Projeto2 e estabeleceu a dependência circular. Veja que mesmo nesse caso, as coisas aconteceram de maneira linear.

R

Bom pessoal, como eu tentei deixar claro no post inicial estou a busca de uma solução para compilação da referência circular e não na solução da referência circular em si. Então, respostas do tipo “referência circular é erro, corrija isso!” não me ajudam muito. :wink:

Minha intenção é entender como o Eclipse faz essa mágica por trás dos panos e fazer o mesmo através de scripts Ant.

Obrigado mesmo assim gente!

D

Camarada, as duas respostas anteriores dizem isto.

Basicamente, o Eclipse vai “andando” e, quando encontra algo compilável, compila.
Se esse algo compilável é uma referência, por exemplo, à um outro projeto, ele irá verificar se o mesmo foi compilado.
Caso não tenha sido, ele para a compilação atual, vai até o segundo projeto e começa a compilá-lo.
Segue o fluxo até encontrar outra referência ou o final do projeto.

O problema é que nesse tipo de referência, começa a compilação do projeto1, encontra a referência ao projeto2, para a compilação do projeto1, vai até o projeto2, acha a referência ao projeto1, para a compilação do projeto2, tenta compilar o projeto1 e fica nisso.

R

drsmachado, desculpa mas não entendi tua explicação. Tu considerou o cenário principal que é a dependência circular?

R

ou melhor … tu ta dizendo queo Eclipse não resolve esse tipo de “problema” ?

Criado 3 de outubro de 2011
Ultima resposta 3 de out. de 2011
Respostas 6
Participantes 4