Easily create stunning presentations
Takes a few minutes to start

More Prezis

Popular prezis

See more popular prezis

Your Next Sucessful Build

What is build?
Configuration
Procedure
How your project looks
Project identifier
Where are the sources
Where are the resources
What are our dependencies
Copy this to that
Compile with 1.5 target
Filter web.xml
Package war
Metadata
Script
Ant-Like
What's your build tool?
Control
Tasks variety
Documentation
Good code quality
How instead of What


Lack of dependency management
Lack of abstraction
Reinvent the wheel
No reuse
No standard
Procedure in XML
Script in Java
Ivy
Dependency Management Tool
Flexible Configuration - not only scope!
Conflict managers - per configuration
all
latest-time
latest-revision
latest-compatible
strict
custom
Concise Metadata
Maven-Like
Revolution!
"What" instead of "How"
Standartization and Structure
“Maven is the AWT of build systems”
@puredanger
Built-in Dependency Managment &
Transitive Dependencies
Convention over Configuration
Poor Implementation
Ant
Documentation
Poorly maintained
Never updated
No documentation
Play bad together
Verbose XML
Scripting
Ant (only more complicated)
No separation between
metadata and scripting parts
Maven2
Mainly used with Ant
Ideal Build Tool
Revolution!
"What" instead of "How"
Standartization and Structure
“Maven is the AWT of build systems”
@puredanger
Built-in Dependency Managment &
Transitive Dependencies
Convention over Configuration
Powerful!
Control
Tasks variety
Documentation
Good code quality
Powerful!
Right!
Flexible configuration
Concise metadata
Conflict resolution
We want even more!
Real scripting language
for scripting part of the build
Shopping
List








Writing scripting part in
Ruby/JRuby, Groovy, Python/Jython
Ivy or improved Maven2 DM
Easy usage of Ant tasks
Usage of Maven2 tree structure
Usage of POM’s DM and ivy.xml
This will give us IDE free integration!
Documentation
Maintenance
Reproducible builds
Responsible distributive
Open Source
Standard Project Structure and
Convention over Configuration
Ant tools
Ivy
Quality
Dependecy
Mngmt
Ant
plugins
Project
Structure
Migration
Gant
Ant in Groovy
Antwrap
Ant in Ruby
Wrappers
Ant tools
Ivy
Quality
Ant tools
Ant tools
Language
Shmant
Nicer than Ant
Uses Java6 scripting capabilities
BeanShell, Groovy, JavaScript (Rhino),
JRuby and Jython
Parallel task execution
Ant tasks & projects executions 
for migration usage
Understands IDEA’s projects
and Eclipse workspaces
Ant tools
Ivy
Quality
Ant tools
Language
Raven
Java Build with
Rake and Gems
Based on Rake
Uses Ruby Gems
Rake syntax
Last version 1.2.3 
(Dec 2007; last commit Dec 2007)
Lacks documentation
Gems
Ant tools
Language
Lancet
Build written in Clojure
It is here just for polyglothism
Version ~0.0
No commits for 9 months
Unusual
Stuff
GMaven
Build Groovy with Maven,
Write Maven plugins in Groovy
Lacks documentation
GroovyMojo
Dependecy
Mngmt
Ant
plugins
Project
Structure
Migration
Groovy
Kundo
Maven2, coded better
Configuration in various ways:
Groovy, POM.xml, .classpath
Scripting part still in plugins!
Latest version – 0.9
(Feb 09, no commits for 8 months,
1.0 never came)
Almost no documentation
Dependecy
Mngmt
Ant
plugins
Project
Structure
Migration
Maven3
Well, Maven 2.1





Dependecy
Mngmt
Ant
plugins
Project
Structure
Migration
Quality
Scripting still in plugins!
Buildr
Ruby-centric 
replacement for Maven2
Based on Rake (Ruby)
Tasks for Java
Maven2: project structure, artifact specs, repos
Easy calls to Ant tasks
YAML
Human friendly data serialization 
standard for all programming languages
Dependecy
Mngmt
Project
Structure
Migration
Ruby
Antwrap
Quality
Rake task
Gradle
Groovy-centric replacement 
for Maven2 with Ivy
Latest version – 0.8 (Sep 09)
German quality, +200 pages TFM
Demo
Migrating Maven2
project to Gradle
Project
Structure
Migration
Groovy
AntBuilder
Quality
Ivy
vs.
Dependencies exclusion:
tedious & limited 
Doxia, Plexus & Friends
No conflict management
Limited Dependency Management
Corrupted local repository files
Garbaged central repository
Everything is a plugin - Bad Idea! (Eclipse in the past)
Downloads the Internet on the first run
Versions auto-update - Not reproducible build: Things “automagically” seize to work
“Everybody’s responsibility” means “Nobody’s responsibility”
Java 1.4
Real Scripting Language
Dependency Management
Ant Tools
Project Structure
Support of Current 
Projects & Migration

Quality
1.8.1 - 13/10/2009
0.7.0  - 16/02/2008
Last commit - 19/02/2008
1.0.1 - 25/09/09
No delivery date
Admits some problems of Maven2: 
code quality & artifact resolution system

Refactoring
XML with attributes, Groovy
Mixins!
Exclusion
Plugins in Java 5
(like JFrog’s AnnoMojo)
NO Plexus! (XBean)
Predictive lifecycle & In/Out params
Error reporting
New artifact resolution system
OSGi & Eclipse
Embedder
IDE ingeration
1.0 Sep. 2009
1.3.5 05/10/2009
Similar in spirit to Buildr
Groovy instead of Ruby 
JVM, Similar to Java
DM based on Ivy
Pre-calculated build plan
Sophisticated multi-module
The Project
Common
Backend
Web
JPA &
Hibernate
Apache
Commons
Spring
Google
API
Wicket
POM.xml
Classes
Jar
POM.xml
Classes
Jar
POM.xml
Classes
War
HTML
js
css
XMLs
XMLs
POM.xml
dbcp
log4j
Migration
Procedure:
1. Declare modules in settings.gradle
2. Declare common properties in parent
3. Run MavenDependencyExtractor.groovy
4. Write the scripting part in Groovy, use Ant tasks
5. Optional - generate pom.xml for IDE integration
6. Run Gradle
7. ?
8. Profit!
http://jira.codehaus.org/browse/GRADLE-154

Created by Baruch Sadogursky

Using Maven2 to build tools was like AWT to UI frameworks: revolutionary, but not without downsides. Concepts such as standardization of project layout and centralized dependency management are preserved in almost every new and future build tool. In this

Reuse this prezi

Share this prezi

Embed this prezi

Copy the code below

  • Copy to clipboard
  • Evgeny Goldin says: Well, you did your job with this presentation, Baruch - I'll probably use Gradle with my next build system. Thank you! Reply