Monday, October 25, 2010
Gradle
A Better Way To Build
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
3
About Hans Dockter
• Founder, Gradle
• CE...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• A general purpose build system
• It comes...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
What is Gradle?
Gradle is declarative
You s...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Deep Configuration API
• Deep Execution A...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Custom Declarative Elements
usePlugin ʻedit...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
The Build Language
Source Sets
Dependencies...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
XML and the What
It does not matter much
wh...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Separate Imperative from Declarative
• Cu...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
14
buildscript {
repositories {
mavenCentra...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Incremental Build
• Parallel Testing
• So...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Ant Tasks
• Deep import of Ant builds
• R...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Mission Critical!
• Very expensive if the...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Dependency Management
• Transitive Dependen...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Deep Integration with
Ant Builds
> gradle h...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Supports Maven/Ant/Gradle with pom or ivy...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
34
Fighting with a Framework
Monday, Octobe...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Monday, October 25, 2010
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Gradle Wrapper
>./gradlew assemble
Monday, ...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
• Very active community (mailing-list, patc...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
39
Commercial Support: www.gradle.biz
Monda...
SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.
Q&A
Monday, October 25, 2010
Upcoming SlideShare
Loading in...5
×

Uberconf 10

832

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
832
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Uberconf 10"

  1. 1. Monday, October 25, 2010
  2. 2. Gradle A Better Way To Build Monday, October 25, 2010
  3. 3. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. 3 About Hans Dockter • Founder, Gradle • CEO, Gradle Inc. • Before Gradle: o Trainer, Mentor, Consultant for Enterprise Java. o Senior Developer for Krugle and Volkswagen. • Prehistoric ;): Committer to JBoss and founder of JBoss-IDE. Monday, October 25, 2010
  4. 4. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • A general purpose build system • It comes with a Groovy DSL and a Java core. • Provides build-in support for Java, Groovy, Scala, Web, OSGi projects. • Gradle provides exciting solutions for many of the big pain points you often have with current builds. – Maintainability – Performance – Usability 4 What is Gradle? Monday, October 25, 2010
  5. 5. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. What is Gradle? Gradle is declarative You specify the WHAT Gradle figures out the HOW Monday, October 25, 2010
  6. 6. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Extensible Build Language instead of a Build Framework Monday, October 25, 2010
  7. 7. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Deep Configuration API • Deep Execution API • Rich API • Extendable Domain Objects • Custom Tasks • Custom Plugins 7 Extending Gradle Monday, October 25, 2010
  8. 8. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Custom Declarative Elements usePlugin ʻeditionsʼ productEditions { enterprise core, plugins, powerAddons public core, plugins, openApi } > gradle enterpriseEditionZip > gradle publicEditionTar Monday, October 25, 2010
  9. 9. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Gradle is declarative without being rigid Monday, October 25, 2010
  10. 10. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. The Build Language Source Sets Dependencies Configurations Archives Projects Artifacts Custom Tasks Plugins Monday, October 25, 2010
  11. 11. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. XML and the What It does not matter much whether a build system uses XML or Groovy for declaring things. Monday, October 25, 2010
  12. 12. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Please no messy build scripts Monday, October 25, 2010
  13. 13. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Separate Imperative from Declarative • Custom Tasks/Plugins • BuildSrc • Jar 13 Organizing Build Logic Monday, October 25, 2010
  14. 14. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. 14 buildscript { repositories { mavenCentral() } dependencies { classpath 'commons-math:commons-math:1.1' } } task math << { org.apache.commons.math.fraction.Fraction lhs = new org.apache.commons.math.fraction.Fraction(1, 3); // do something } Build Script Libraries Monday, October 25, 2010
  15. 15. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Performance is one of the biggest pain points of complex builds. Monday, October 25, 2010
  16. 16. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Should clean be required for a reliable build? (Hint: We have the 21st century) Monday, October 25, 2010
  17. 17. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Incremental Build • Parallel Testing • Soon: Parallel Builds • Not too distant future: Distributed testing/builds • Rich Model 17 Speed Improvements Monday, October 25, 2010
  18. 18. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Gradle is a Build Integration Tool Monday, October 25, 2010
  19. 19. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Ant Tasks • Deep import of Ant builds • Retrieve/Deploy to Maven/Ivy repositories • Autogeneration of pom.xml/ivy.xml • Future: Deep import of Maven builds 19 Build Integration Features Monday, October 25, 2010
  20. 20. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Mission Critical! • Very expensive if the build system can’t adapt to the existing project layout: – Freeze – Project automation not working for a while – Different branches (unreliable, hard to compare, ...) • Gradle’s suppleness enables baby steps. – Gradle can adapt to any project layout. – No separate branches – Comparable --> You can write tests 20 Build Migration Monday, October 25, 2010
  21. 21. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Dependency Management • Transitive Dependencies • Repository less dependencies are 1st class citizens. • Excludes per configuration or dependency • Very flexible repository handling • Based on Apache Ivy • Powerful API • Much More ... Monday, October 25, 2010
  22. 22. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Deep Integration with Ant Builds > gradle hello Hello, from Gradle...Here comes Ant... [ant:echo] Hello, from Ant <project> <target name="hello" depends="intro"> <echo>Hello, from Ant</echo> </target> </project> ant.importBuild 'build.xml' hello.doFirst { println 'Here comes Ant' } task intro << { println 'Hello, from Gradle'} Monday, October 25, 2010
  23. 23. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Supports Maven/Ant/Gradle with pom or ivy. • Supports any repository layout • Very advanced features • Gradle Artifactory plugin • Integrated in Gradle Hudson plugin. • Gradle Inc. has business partnership with JFrog. 23 Build Eco System Monday, October 25, 2010
  24. 24. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  25. 25. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  26. 26. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  27. 27. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  28. 28. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  29. 29. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Process is very important. But it is all about YOUR process Monday, October 25, 2010
  30. 30. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Their is no one-size-fits-all project structure for the enterprise. Monday, October 25, 2010
  31. 31. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. The physical structure of your projects should be determined by your requirements. (What, if not?) Monday, October 25, 2010
  32. 32. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Be as rigid as YOU want Monday, October 25, 2010
  33. 33. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. FRAME- WORKITIS Monday, October 25, 2010
  34. 34. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. 34 Fighting with a Framework Monday, October 25, 2010
  35. 35. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Monday, October 25, 2010
  36. 36. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission.SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Extensible Build Language instead of a Build Framework Monday, October 25, 2010
  37. 37. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Gradle Wrapper >./gradlew assemble Monday, October 25, 2010
  38. 38. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. • Very active community (mailing-list, patches, issues) • Apache v2 license. • Excellent user’s guide (200+ pages) + many samples • Frequent releases, multiple commits per day • Quality is king: – 2800 unit tests, Many hundreds of integration test – Healthy codebase – low defect rate • Commiter -> Steve Appling, Hans Dockter, Tom Eyckmans, Adam Murdoch, Russel Winder 38 Project Background Monday, October 25, 2010
  39. 39. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. 39 Commercial Support: www.gradle.biz Monday, October 25, 2010
  40. 40. SpringOne 2GX 2009. All rights reserved. Do not distribute without permission. Q&A Monday, October 25, 2010
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×