Pergunta

Eu estou tentando criar a minha própria tarefa, que vai criar um pacote de todos os artefatos gerados durante a minha multi-compilação do projeto.

Atualmente, o que eu faço direito, agora é só:

gradle build createPackage

O que dá saída semelhante ao seguinte:

:test-utility:compileJava UP-TO-DATE
:test-utility:processResources UP-TO-DATE
...
:test-utility:check UP-TO-DATE
:test-utility:build UP-TO-DATE
Creating Package...
Created.

BUILD SUCCESSFUL

Total time: 4.654 secs

Com o createPackage tarefa:

task createPackage {    
    println "Creating Package..."
    println "Created."
}

No entanto, eu gostaria de simplesmente executando apenas um comando, então, qual seria a melhor maneira de fazer isso e garantir que a encomenda fica mantida?

Idealmente, eu gostaria de chamar build dentro do createPackage tarefa ou acrescentar a build tarefa com a minha tarefa.

Foi útil?

Solução

Ok ler entre as linhas, há algumas coisas para limpar

1) o Seu printlns estão sendo executados na fase de configuração, não a fase de execução.Ver http://www.gradle.org/docs/current/userguide/build_lifecycle.html para obter mais informações.

2) Você não tem um único 'construir' tarefa. gradle build na linha de comando irá executar o 'construir' tarefa de cada um de seus subprojetos.Seu pacote tarefa precisaria depender de todos eles.Algo como ...

apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   dependsOn subprojects*.build
}

3) Você pode ser mais declarativa com gradle - apenas diga a ele o que você deseja compactar e ele irá descobrir o que ele precisa para ser executado.Por exemplo, você pode dizer que você quer zip de todos os frascos de seus subprojetos.

apply plugin: 'java'    
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   from subprojects*.jar
}

Outras dicas

Há uma abundância de formas.Uma sugestão é modificar build a depender createPackage para certificar-se de que você pode chamar apenas de gradle build.Em seguida, pretende reforçar a sua tarefa e dizer quais são suas entradas (provavelmente, essas são as saídas de algumas outras tarefas, como jar).Gradle irá adicionar estas tarefas para execução quando você executar o build e pode re-executar-los com base no up-to-date status de cada tarefa.Isto está documentado no manual - http://www.gradle.org/docs/current/userguide/more_about_tasks.html#sec:up_to_date_checks e mais tarde, em um capítulo sobre tarefas personalizadas.

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