// Generate a new Groovy Project Qwickly (tm) // // source: https://github.com/townsfolk/gradle-templates // in build.gradle file (in the project's root folder): apply from: 'http://www.tellurianring.com/projects/gradle-plugins/gradle-templates/apply.groovy' dependencies { groovy localGroovy() } //then get a list of tasks: >> gradle tasks ... Template tasks -------------- createGroovyClass - Creates a new Groovy class in the current project. ************** createGroovyProject - Creates a new Gradle Groovy project in a new directory named after your project. createJavaClass - Creates a new Java class in the current project. createJavaProject - Creates a new Gradle Java project in a new directory named after your project. exportGroovyTemplates - Exports the default groovy template files into the current directory. exportJavaTemplates - Exports the default java template files into the current directory. initGroovyProject - Initializes a new Gradle Groovy project in the current directory. ************** initJavaProject - Initializes a new Gradle Java project in the current directory. ... >> gradle initGroovyProject >> gradle createGroovyClass /**********************************************************/ //Here's a pretty useful project build.gradle: apply plugin: 'groovy' apply from: 'http://www.tellurianring.com/projects/gradle-plugins/gradle-templates/apply.groovy' apply from: 'http://evgenyg.artifactoryonline.com/evgenyg/libs-releases-local/CodeNarc.gradle' group = 'myapp1' mainClassName = 'org.MyCompany.Main' dependencies { groovy localGroovy() } jar { manifest { attributes("Main-Class": mainClassName) } } // uberjar adds in groovy jars to make this easy: "java -jar MyApp.jar" task uberjar(type: Jar, dependsOn:[':compileJava', ':compileGroovy']) { from files(sourceSets.main.output.classesDir) from configurations.runtime.asFileTree.files.collect { zipTree(it) } manifest { attributes 'Main-Class': mainClassName } }
Monday, June 17, 2013
Gradle templates
Script template
// this is just intended to give a little more OOP structure to a script. // put most code inside of run(), plus class variables and methods. class Script { private String hello = "Hello" public Script run(Map options = [:]) { println "$hello ${options.name ?: 'World'}${shout(23)}" return this // for method chaining } private String shout(int times = 1) { return ('!' * times) } } new Script() .run() .run([name:'Crazy4Groovy']) println 'DONE'
Friday, June 14, 2013
Simple Performance Benchmarking
int delayMillis = 100 Long startMillis = Calendar.instance.time.time Thread.sleep(delayMillis) Long passedMillis = Calendar.instance.time.time - startMillis println passedMillis assert passedMillis >= delayMillis
Wednesday, June 12, 2013
XML StreamingMarkupBuilder
import groovy.xml.StreamingMarkupBuilder Map props = [addressid:'1', line1:'line-1_VALUE', line2:'line-2_VALUE'] def builder = new StreamingMarkupBuilder() def address = { "address"(id: props.addressid) { "line-1"(props.line1) "line-2"(props.line2) "city"("city_VALUE") // typing wimped out... "state"("State_VALUE") "postal-code"("postal_VALUE") } } println builder.bind(address).toString() // something XML-compatible <address id="1"> ...</address>
Thursday, June 6, 2013
Scrape image src's from a web page
import java.net.URLEncoder String url = "http://msnbc.com" String serviceUrl = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22${URLEncoder.encode(url)}%22%20and%20xpath%3D%22%2F%2Fimg%22" //println serviceUrl String resultXML = serviceUrl.toURL().text // YQL will return the HTML page as XML! //println resultXML def root = new XmlSlurper().parseText(resultXML) List imgSrcs = root.results.img.@src as List imgSrcs = imgSrcs*.toString().unique() //println imgSrcs.join('\n')
Wednesday, June 5, 2013
Immutable Maps (and Lists)
//source: http://royontechnology.blogspot.co.at/2010/06/creating-collection-with-single-element.html //note the different constructor args; both return immutables assert [2] == Collections.singletonMap(1, 1).collect {k,v -> return k+v } assert [3, 7] == Collections.unmodifiableMap([1:2, 3:4]).collect {k,v -> return k+v }
Subscribe to:
Posts (Atom)