Em uma construção gradle de vários projetos, alguém pode me dizer qual é exatamente a diferença entre a seção "allprojects" e a seção "subprojects"? Apenas o diretório pai? Alguém usa os dois? Em caso afirmativo, você possui regras gerais que determinam o que normalmente é colocado em cada uma?
Pergunta relacionada: qual é a diferença entre as duas sintaxes (realmente para todos os projetos AND subprojetos):
subprojects { ...
}
e
configure(subprojects) { ...
}
Quando você um sobre o outro?
Adicionando à resposta de Ryan, o
configure
método se torna importante quando você deseja configurar subconjuntos personalizados de objetos. Por exemploconfigure([project(":foo"), project(":bar")]) { ... }
ouconfigure(tasks.matching { it.name.contains("foo") }) { ... }
.Quando usar
allprojects
vs.subprojects
depende das circunstâncias. Muitas vezes você usará os dois. Por exemplo, plug-ins relacionados a código como o plug-in Java geralmente são aplicadossubprojects
, porque em muitas construções o projeto raiz não contém nenhum código. Os plugins Eclipse e IDEA, por outro lado, geralmente são aplicadosallprojects
. Em caso de dúvida, veja exemplos e outras construções e / ou experimentos. O objetivo geral é evitar configurações irrelevantes. Nesse sentido,subprojects
é melhor doallprojects
que contanto que dê os resultados esperados.fonte