Javaone 2013 moscow gradle english

39
Gradle Evgeny Borisov

description

The English version

Transcript of Javaone 2013 moscow gradle english

Page 1: Javaone 2013 moscow gradle   english

Gradle

Evgeny Borisov

Page 2: Javaone 2013 moscow gradle   english

Good to be programmer…

Page 3: Javaone 2013 moscow gradle   english
Page 4: Javaone 2013 moscow gradle   english

You start crooked, everything is crooked

Page 5: Javaone 2013 moscow gradle   english

What are the tasks of build today?

• VCS • CI scripts & different xml configurations• Dependency management• Deployment (clustering)• Unit and sanity Tests• Documentation• …

Page 6: Javaone 2013 moscow gradle   english

Grandson will not come today, he sent mail that the build failed.

Page 7: Javaone 2013 moscow gradle   english

Which build tools do you know?

Page 8: Javaone 2013 moscow gradle   english

I use…

1. Gradle2. Maven3. Ant4. Ivy5. I build with my hands…

Page 9: Javaone 2013 moscow gradle   english

Declarative & Imperative

Page 10: Javaone 2013 moscow gradle   english

Declarative & Imperative

• ANT – Imperative

• Maven - Declarative Not really

Page 11: Javaone 2013 moscow gradle   english

Maven

<build>

</build>

Page 12: Javaone 2013 moscow gradle   english

We Love you, XML

Page 13: Javaone 2013 moscow gradle   english

<build>

</build>

Page 14: Javaone 2013 moscow gradle   english

We also have two problems…

• XML - yes, DSL- no

Page 15: Javaone 2013 moscow gradle   english

Who will be today’s Chuck Norris?

Page 16: Javaone 2013 moscow gradle   english
Page 17: Javaone 2013 moscow gradle   english

Why Gradle?

• Not adopted to specific type project• Powerful DSL, which can be extended easily• Groovy• Effective build– Tasks can run in parallel – Incremental build

Page 18: Javaone 2013 moscow gradle   english

One doesn’t simply talk. Lets build some project.

Page 19: Javaone 2013 moscow gradle   english
Page 20: Javaone 2013 moscow gradle   english

Where is my print???

test { testLogging.showStandardStreams = true}

Page 21: Javaone 2013 moscow gradle   english

Build task dependency graph

Page 22: Javaone 2013 moscow gradle   english

It’s exactly like in maven

Page 23: Javaone 2013 moscow gradle   english

Not like maven at all

• You can add dependency to existing task

• You can change task behavior via it’s properties

• You can extend tasks

Page 24: Javaone 2013 moscow gradle   english

Build task dependency graph

Page 25: Javaone 2013 moscow gradle   english

I need a war!

Page 26: Javaone 2013 moscow gradle   english

Lets write a Task

1. Class MyTask extends DefaultTask2. Write a method @TaskAction3. Add it to DSL4. That is all!

Page 27: Javaone 2013 moscow gradle   english

Additional plugins

• Groovy Plugin• The Scala Plugin• The War Plugin• The Ear Plugin• The Jetty Plugin• The Eclipse Plugin• The IDEA Plugin

• AspectJ plugin• ClassLoader plugin• Exec plugin• JavaFx Plugin• Tomcat Plugin• Android Plugin• The FindBugs Plugin

Page 28: Javaone 2013 moscow gradle   english

Your own Plugin

• Why should I write my own plugin? It’s not enough to write my own tasks?

• Extend DSL. – We want declarative build!

Page 29: Javaone 2013 moscow gradle   english

Do you want plugin???

Page 30: Javaone 2013 moscow gradle   english

• How to write plugin:https://bitbucket.org/davidmc24/gradle-bintray-plugin/src/6adc1aca5ed712b8802fe6b3830b2d860d9fda88/Bintray.gradle?at=default

• Adding plugin: buildscript: apply from: 'gradle/Bintray.gradle'

• Usage:repositories { bintray.jcenter() }

Page 31: Javaone 2013 moscow gradle   english

I can’t get out of here

I deep in this ant shit

Page 32: Javaone 2013 moscow gradle   english

You love ant?

Page 33: Javaone 2013 moscow gradle   english

Migrating from ant to gradle

Page 34: Javaone 2013 moscow gradle   english

Migrating from ant

Page 35: Javaone 2013 moscow gradle   english

I can’t migrate from maven

Page 36: Javaone 2013 moscow gradle   english

Yes you can!

Page 37: Javaone 2013 moscow gradle   english

maven2gradle plugin1. Type this in your build.gradle :

apply plugin:’maven2Gradle’

2. Put this script near you pom

3. Run: gradle build

Page 38: Javaone 2013 moscow gradle   english

What to read?

• http://www.gradle.org/docs/current/userguide/userguide.html

• http://www.gradle.org/docs/current/dsl/• http://www.gradle.org/docs/current/javadoc/

Page 39: Javaone 2013 moscow gradle   english

Q&A

[email protected]