Gradle - compilação de vários projetos

O Gradle pode gerenciar projetos menores e maiores com facilidade. Projetos pequenos têm um único arquivo de construção e uma árvore de origem. É muito fácil digerir e entender um projeto que foi dividido em módulos menores e interdependentes. O Gradle oferece suporte perfeito para esse cenário de criação de vários projetos.

Estrutura para construção de vários projetos

Essas construções vêm em todas as formas e tamanhos, mas eles têm algumas características comuns -

  • UMA settings.gradle arquivo no diretório raiz ou mestre do projeto.

  • UMA build.gradle arquivo no diretório raiz ou mestre.

  • Diretórios filho que têm seus próprios *.gradle arquivos de construção (algumas construções de vários projetos podem omitir scripts de construção de projetos filho)

Para listar todos os projetos no arquivo de construção, você pode usar o seguinte comando.

C:\> gradle -q projects

Resultado:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

O relatório mostra a descrição de cada projeto, se especificado. Você pode usar o seguinte comando para especificar a descrição. Cole nobuild.gradle Arquivo.

description = 'The shared API for the application'

Especificando uma configuração geral de construção

Em um build.gradle no arquivo root_project, as configurações gerais podem ser aplicadas a todos os projetos ou apenas aos subprojetos.

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

Isso especifica um comum com.example.gradle grupo e o 0.1.0versão para todos os projetos. osubprojects encerramento aplica configurações comuns para todos os subprojetos, mas não para o projeto raiz, como o allprojects o fechamento sim.

Configurações e dependências específicas do projeto

O nucleo ui e util subprojetos também podem ter seus próprios build.gradle arquivo, se eles tiverem necessidades específicas, que ainda não são aplicadas pela configuração geral do projeto raiz.

Por exemplo, o projeto da interface do usuário geralmente tem uma dependência do projeto principal. Portanto, o projeto de interface do usuário precisa de seu própriobuild.gradle arquivo para especificar esta dependência.

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

As dependências do projeto são especificadas com o método do projeto.