3. What this talk is about?
● Scala support in Gradle
● Play support in Gradle
● Continuous mode (watch mode)
● Demos
4. Who am I?
● A Software Engineer at Linkedin
● Development Tools
● Not a Scala expert
● Not a Play expert
● Maybe a build expert: make, ant, maven, sbt,
and gradle
5. ● Object oriented
● Strong typed
● Full support for functional programming
● JVM based
● 1.5% of LI code base (Java 25.1%)
6. (Simple Build Tool? LOL)
● De facto build tool for scala community
● Native support for compiling Scala code and
integrating with many Scala test frameworks
● Build descriptions written in Scala using a DSL
● Dependency management using Ivy
● Continuous compilation, testing, and
deployment
● Integration with the Scala interpreter for rapid
iteration and debugging
● Support for mixed Java/Scala projects
7. vs.
Sbt Gradle
DSL language Scala Groovy
Supported languages Scala, Java Java, Scala, C++, ...
Incremental Scala build Yes Possible with Zinc
Interactive Shell Yes No (but has Gradle daemon)
REPL Yes No
Multi-module support Yes Yes
Dependency Management Ivy proprietary
Continuous Mode Yes YES!
Vendor and community support Mediocre Great
Existing LI Tooling Integration Minimal when we started Great
8. Scala Support in Gradle
● Scala plugin
● From the very beginning of Gradle
● 0.8 (September 2009)
● Zinc support (1.3 November 2012)
10. Limitations
● Scala version can only be inferred from
direct dependencies
● No conflicting scala version validation
● No cross-build support
● No native specs2 integration
● Bad IDE integration
● Second class citizen in Scala world
● Smaller adopter community
11. Framework
● Web App Framework
● Async I/O (JBoss Netty)
● Built-in hot reloading
● Built on top of sbt
● Supports both Java and Scala
● 159+ Play Applications
12. Why to build Play on Gradle
● Pains with Ivy
● Simplify our processes
● Unify our build technologies
● DRY
14. What’s involved?
1. Assets processing and packaging
2. Routes compilation
3. Twirl templates compilation
4. Scala/Java compilation
5. Running the server in development
mode
6. Play binary packaging
7. Play distribution packaging
15. Milestones
1. Using Gradle to build a Play application
2. Continuous Mode and Hot-Reload
3. Making it real!
16. Demo
● Build a play app
● Start the server in development mode