Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12....

37
Tuesday, February 14, 12

Transcript of Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12....

Page 1: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Tuesday, February 14, 12

Page 2: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

About me

• Hardy Ferentschik - [email protected]• +10 years experience in software development• Hibernate team member for 3 years• Focus on Validator and Search• JSR 303 Expert Group member

Tuesday, February 14, 12

Page 4: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Why this talk?

• Report from the trenches• Share experiences• Fun to talk about

Tuesday, February 14, 12

Page 5: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 6: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 7: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

target ... : prerequisites ... recipe ... ...

Tuesday, February 14, 12

Page 8: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 9: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 10: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

<project name="MyProject" default="dist" basedir=".">

<property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/>

<target name="init"> <tstamp/> <mkdir dir="${build}"/> </target>

<target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target>

<target name="clean" description="clean up" > <!-- Delete the ${build} and ${dist} directory trees --> <delete dir="${build}"/> <delete dir="${dist}"/> </target></project>

Tuesday, February 14, 12

Page 11: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 12: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 13: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Build tool evolution!?

time

Tuesday, February 14, 12

Page 14: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Make Ant Maven Gradle

Tuesday, February 14, 12

Page 15: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Make Ant Maven Gradle

Tuesday, February 14, 12

Page 16: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Tuesday, February 14, 12

Page 17: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Maven - History

• Created by Jason van Zyl• Prototype Aug. 2001 as part of Alexandria• July 2004 - Maven 1.0• October 2005 - Maven 2.0• October 2010 - Maven 3.0

Tuesday, February 14, 12

Page 18: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Maven - Basic ideas

• Convention over configuration• Metadata management via POM• Build lifecycle • Dependency management

Tuesday, February 14, 12

Page 19: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Hibernate Metamodel Generator

https://github.com/hibernate/hibernate-metamodelgen

Tuesday, February 14, 12

Page 20: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

http://kent.spillner.org/blog/work/2009/11/14/java-build-tools.html

Tuesday, February 14, 12

Page 21: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Maven Helferlein• Dependency plugin

• mvn dependency:tree• mvn dependency:build-classpath• mvn dependency:copy-dependencies

• Help plugin

• mvn help:describe -Dplugin=compiler• mvn help:effective-pom• mvn help:active-profiles

Tuesday, February 14, 12

Page 22: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Maven issues

• Scripting• Rector builds• Assembly• Aggregation• Grouping of dependencies

Tuesday, February 14, 12

Page 24: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Gradle

• Created by Hans Docktor• Earliest Jira release 0.8 Sept. 2009• Latest release 1.0-milestone-7• Gradle tries to hit the sweet spot between

Ant and Maven

Tuesday, February 14, 12

Page 25: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Gradle Docs

Tuesday, February 14, 12

Page 26: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Welcome Gradle

Tuesday, February 14, 12

Page 27: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Welcome Gradle

Tuesday, February 14, 12

Page 28: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

3-phase build

1. initialize 2. configure3. execute

Tuesday, February 14, 12

Page 29: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Task

task myTasktask myType << { task action }task myTask { configure closure }task myTask(type: SomeType)task myTask(type: SomeType) { configure closure }task myTask{ doFirst{...} ... doLast{...}}

Task is a sequence of Action objects!

Tuesday, February 14, 12

Page 30: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Gradle highlights

• Build scripts are code• Dynamic task creation and modification tasks• Powerful logging and logging configuration• Speed

Tuesday, February 14, 12

Page 31: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Metamodelgen gradlefied

Tuesday, February 14, 12

Page 33: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Gradle gotchas

• Tricky syntax• Steep learning curves • IDE support not quite there yet

Tuesday, February 14, 12

Page 34: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Maven vs GradleMaven Gradle

DistributionCustomizable DocumentationSpeedResource consumptionLearning curveIDE support

Tuesday, February 14, 12

Page 36: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Tuesday, February 14, 12

Page 37: Tuesday, February 14, 12 - Jfokus · 2019-09-11 · Make Ant Maven Gradle Tuesday, February 14, 12. Tuesday, February 14, 12. Maven - History • Created by Jason van Zyl • Prototype

Q + A

Tuesday, February 14, 12