// 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:
Comments (Atom)