domingo, 5 de julio de 2015

Iniciando una Aplicación Web con Gradle

Gradle es una herramienta de automatización para la creación de artefactos de software, con esta herramienta podemos automatizar la creación de empaquetados del tipo jar, war, ear y otros. En esta publicación voy a mostrar de manera simple como podemos crear un artefacto del tipo archivo web(war) y copiarlo a un determinado directorio. A diferencia de maven, el archivo de configuración por default es build.gradle, dicho archivo incluirá los comandos para compilar, empaquetar, conectarse a un repositorio de binarios(artifactory, archiva, nexus, etc.) y descargar dichos binarios para su inclusión en el classpath y en la generación del artefacto, también incluirá tareas personalizadas como copiar los artefactos generados a una determinada ruta.

El archivo de configuración build.gradle es el siguiente:
//aplicamos el plugin java sobre las fuentes para que compile las clases
apply plugin: 'java'

//aplicamos el plugin war para que todo lo que esté dentro de src/main/webapp lo copie dentro del war
apply plugin: 'war'

//le indicamos a gradle que genere nuestro artefacto con esta versión
version = '1.1.0'

//indicamos los repositorios de binarios que gradle descargará e incluirá en el classpath de compilación.
repositories {
 mavenCentral()
}

//incluimos las dependencias de nuestra aplicación
dependencies {

 //indicamos una dependencia de compilación, si la dependencia es de compilación
 //entonces además de incluirla en el classpath de compilación también será incluída
 //en el classpath de ejecución(como dependencia en el directorio lib)
 compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.6.2'
 compile group: 'org.springframework', name: 'spring-aop', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-context', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-context-support', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-core', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-web', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-webmvc', version: '3.2.3.RELEASE' 
 compile group: 'org.springframework', name: 'spring-beans', version: '3.2.3.RELEASE'
 compile group: 'org.springframework', name: 'spring-jdbc', version: '3.2.3.RELEASE'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    
    //a diferencia del anterior esta dependencia solo servirá para compilar
    //se entiende que en tiempo de ejecución será proveída por el servidor o contenedor de aplicaciones
    providedCompile group: 'javax.servlet', name:'javax.servlet-api', version: '3.1.0'
    
    //a diferencia de los 2 tipos de dependencias anteriores, esta dependencia solo será incluída
    //en la fase de testing.  
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

//creamos una tarea que copiará los artefactos generados a una determinada ruta en nuestro filesystem
task copiarGeneradosAServer{
  doLast{
     copy {
       from 'build/libs'
       into 'D:/Projects/4.Install/1.Servers/3.Weblogic/wls12130/user_projects/domains/naboo/autodeploy'
       include '*.war'
     }   
  }

}



El comando para ejecutar el empaquetamiento y su resultado es el siguiente:
J:\proyectos\testing>gradle clean build copiarGeneradosAServer
:clean
:compileJava
:processResources UP-TO-DATE
:classes
:war
:assemble
:compileTestJava UP-TO-DATE
:processTestResources
:testClasses
:test UP-TO-DATE
:check UP-TO-DATE
:build
:copiarGeneradosAServer

BUILD SUCCESSFUL

Total time: 7.204 secs
J:\temporal\testing\testing>

el proyecto completo te lo puedes bajar desde esta rama en github

No hay comentarios.:

Publicar un comentario

Es bueno comunicarnos, comenta!!.