Gradle

Note

Em construção

Subsections of Gradle

Comandos basicos


#  Lista as tasks
gradle tasks

# Mostrar o help
gradle help --taks init

# Inicia um projeto
gradle init

# Executar o projeto
gradle run

# Executa os testes
gradle test

# Installar as dependencias
gradle build --scan

# Builda3 o projeto
gradle build

# Ver cobertura de testes
/app/build/reports/tests/test/index.html

Jar

Lista o conteudo do jar

jar tf app.jar

Mostra o conteudo do arquivo manifest

# extrai manifest
jar xf app.jar META-INF/MANIFEST.MF

# exibe
cat META-INF/MANIFEST.MF

Executa aplicação

java -jar app.jar

Definindo tasks


tasks.register('teste') {
    println 'Hello world'
}

tasks.register('hello') {
    doLast {
        println 'Hello world!'
    }
}
  • Executando task
gradle -q teste 
-ou
gradle teste // mostra status da execução

Scripts em tasks

link: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:projects_and_tasks

Basico

tasks.register('upper') {
    doLast {
        String someString = 'mY_nAmE'
        println "Original: $someString"
        println "Upper case: ${someString.toUpperCase()}"
    }
}


// exemplo de repetição
tasks.register('count') {
    doLast {
        4.times { print "$it " }
    }
}
  • Executando
gradle upper

Tasks sequencial

tasks.register('taskX') {
    dependsOn 'taskY'
    doLast {
        println 'taskX'
    }
}
tasks.register('taskY') {
    doLast {
        println 'taskY'
    }
}
  • Executando
gradle taskX

# mostrar a execução das duas tasks, pois a taskX depende da taskY

Alterando conportamento de uma task

tasks.register('hello') {
    doLast { // definie a ordem de execução
        println 'Hello Earth'
    }
}
tasks.named('hello') {
    doFirst {  // defini a orde de execução 
        println 'Hello Venus'
    }
}
tasks.named('hello') {
    doLast {
        println 'Hello Mars'
    }
}
tasks.named('hello') {
    doLast {
        println 'Hello Jupiter'
    }
}
  • Executando
gradle -q hello
#saida
#Olá Vênus
#Olá terra
#Olá marte
#Ola jupiter

https://docs.gradle.org/current/userguide/plugins.html#plugins | –> Aplicando plug-ins com o DSL de plug-ins

Dependências


  • As dependências pode ser de dois tipos:
    • como configurações do tipo api - que serão expostas transitivamente aos consumidores da biblioteca e, como tal, aparecerão no classpath de compilação dos consumidores
    • como configuração do tipo implementation que, por outro lado, não serão expostas aos consumidores e, portanto, não vazarão para o classpath de compilação dos consumidores
dependencies {
    api 'org.apache.httpcomponents:httpclient:4.5.7'
    implementation 'org.apache.commons:commons-lang3:3.5'
}

OBS: As configurações compile e runtime foram removidas com o Gradle 7.0. Consulte o guia de atualização como migrar para implementatione apiconfigurações. - compile –> implementation - runtime –> api

Prefira a configuração de implementation em vez de api quando possível.