Gradle constrói apenas um módulo


152

Eu tenho uma compilação gradle de vários módulos. Eu quero executar destinos para um módulo usando root. Ex:

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

Portanto, todos os destinos podem ser executados a partir da raiz, especificando o módulo. Existe uma maneira simples de fazer isso?

Obrigado !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... É isso que você deseja alcançar?
7786

@pepuch, você poderia esclarecer? Gostaria de enviar atualizações para o meu aplicativo que tem um objetivo, mas fazer com que ele construa apenas as alterações no aplicativo sem reconstruir a biblioteca.
The_Martian 11/07/19

Respostas:


302

Para executar uma tarefa de um subprojeto específico, especifique seu caminho da tarefa . Por exemplo:

gradle :ABC:build

O líder :representa o projeto raiz. ABCé o subprojeto e builduma tarefa nesse projeto.


4
Como você pode controlar via configuração em vez de linha de comando para montar apenas um subprojeto dentre muitos? Para os Pipelines de lançamento do Google, ele dispara uma "montagem limpa gradle" no projeto raiz. Para mim, isso tenta criar o AppEngine AND Android. O Pipeline de liberação falhará na construção do Android, pois não possui o SDK instalado, compreensível para uma máquina transitória. Além disso, também não parece que o Release Pipelines ofereça opções de configuração.
Brunobowden

No meu caso, o projeto raiz ainda inspeciona e dispara mensagens de erro com as quais não quero lidar no momento. Muito irritante.
precisa

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA é melhor, ele irá lidar com as dependências do módulo.
John John

84

Encontrei uma maneira rápida

gradle build -p moduleA

moduleA é o diretório do módulo.

O comando acima cria um moduleAe todos os seus submódulos e moduleAdeve ser seu caminho


4
Acima de construir um comando moudleA e tudo o que do sub-módulo, e moduleA deve ser ele do caminho gradle build -p path\pathSt\moduleA
Viraj

1
Eu tenho um wrapper para subprojetos que não possui arquivo gradle próprio. Ao contrário da resposta selecionada, isso funciona para mim. Também obrigado pelo esclarecimento no comentário, você poderia adicioná-lo à resposta?
Vlasec 10/09/2015

24

No Mac OS, a única variante que está trabalhando comigo:

./gradlew  ABC:build

ABC é o nome do módulo

(Pode estar funcionando no Linux também)


5

insira a descrição da imagem aqui

Se o seu IDE é o Android Studio, existe uma maneira simples: basta escolher a pasta do módulo que deseja compilar, clique em Compilar e escolha Tornar o módulo 'sua pasta do módulo'.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.