Pergunta

Quais são as possibilidades de aplicar restrições nas dependências do pacote em um sistema de construção Java? Por exemplo, o myapp.server.bl.Customer aula não deve ter permissão para se referir ao myapp.client.ui.customlayout pacote. Estou interessado em soluções baseadas em formigas ou específicas de IDE.

Gostaria de receber uma mensagem de erro na compilação, indicando que uma regra de dependência (personalizada) do pacote foi violada e a construção abortada. Eu também gostaria de manter as dependências em uma lista, de preferência em um arquivo de texto, fora dos scripts de formigas ou arquivos do projeto IDE.

(Eu não conheço o Maven, mas li aqui, ele tem melhor suporte para gerenciamento de dependência do módulo)

Foi útil?

Solução

Eu acredito que o Checkstyle tem um cheque para isso. É chamado Controle de importação

Outras dicas

Você pode configurar projetos Eclipse para especificar regras de acesso. As regras de acesso podem especificar níveis "proibidos", "desencorajados" e "acessíveis", todos com regras de curinga. Em seguida, você pode configurar violações de desanimado ou proibido de ser sinalizado como avisos ou erros durante as construções.

Uma espécie de artigo antigo sobre a idéia (os detalhes podem estar desatualizados):

http://www.eclipsezone.com/eclipse/forums/t53736.html

Se você estiver usando plugins Eclipse (ou OSGI), as partes "públicas" do plug -in/módulo serão explicitamente definidas e isso faz parte do modelo.

hera Parece uma boa solução para o seu problema (se você estiver usando a ANT). Ivy é o componente de gerenciamento de dependência oficial da formiga e, portanto, integra -se bem com a formiga. É capaz de resolver dependências, lidar com conflitos, criar exclusões e assim por diante.

Ele usa uma estrutura XML simples para descrever as dependências e é mais fácil de usar do que o Maven, porque só tenta abordar problemas de resolução de dependência.

Da página inicial da hera:

Ivy é uma ferramenta para gerenciar dependências de projetos (gravação, rastreamento, resolução e relatório). É caracterizado pelo seguinte:

  1. Flexibilidade e configuração - A hera é essencialmente agnóstica do processo e não está ligada a nenhuma metodologia ou estrutura. Em vez disso, fornece a flexibilidade e configuração necessárias para serem adaptadas a uma ampla gama de processos de gerenciamento e construção de dependências.
  2. Integração rígida com Apache Ant - enquanto disponível como uma ferramenta independente, a hera funciona particularmente bem com a Apache Ant, fornecendo várias tarefas de formigas poderosas que variam da resolução de dependência a relatórios e publicação de dependência.

Para as soluções específicas do IDE, o Intellij Idea possui uma ferramenta de análise de dependência que permite definir dependências inválidas também.http://www.jetbrains.com/idea/webhelp2/dependency-validation-dialog.html

A violação da dependência será mostrada ao compilar e viver, ao editar a classe dependente (como listras de erro/aviso na barra de erro do lado direito).

Ainda mais automação podem ser obtidas com o TeamCity Build Server da JetBrains, que pode executar as compilações de inspeção e relatar as verificações configuradas acima.

Para outra solução independente do IDE, o aspecto pode ser usado para declarar dependências inválidas (e integrar a etapa no processo de construção, a fim de obter informações de aviso/erro para os problemas).

O Eclipse possui suporte para isso por meio de propriedades do caminho de construção / propriedades do JAR. Eu acho que pode funcionar apenas nos limites JAR / Project.

Pode ser Classycle pode ser usado:http://classycle.sourceforge.net/ddf.html

Você pode usar vários módulos em IDEA ou MAVEN ou vários projetos no Eclipse e Gradle. O conceito é o mesmo em todos os casos.

Uma interpretação trivial seria um módulo para MyApp.server.bl e outro para myApp.client.ui.customlayout sem dependências de tempo de compilação entre nenhum deles. Agora, qualquer tentativa de compilar código ou código-completo contra o módulo/projeto oposto falhará conforme desejado.

Para auditar o quão extenso o problema já é, um ponto de partida útil para a idéia de Intellij é Analisando dependências:

http://www.jetbrains.com/idea/webhelp/analyzing-dependencies.html

A partir desse artigo, você pode ver como executar e agir na análise de dependência do seu projeto.

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