Ü̈ber Ant und Maven zu SBT und Gradle

  • Published on
    13-May-2015

  • View
    2.305

  • Download
    0

DESCRIPTION

Diese Prsentation zeigt einen berblick ber verschiedene Build Tools und zeigt einen Vergleich mit Vor- und Nachteilen.

Transcript

  • 1.ber Ant und Maven zu SBT und GradlePersnliche Build-Hllen fr JedermannAndreas Hartmann & Dr. Halil-Cem Grsoy22.09.2011

2. SpeakerAndreas Hartmann [hartmann@adesso.de]Principal Software EngineerTtigkeitsschwerpunkte: Leichtgewichtige Softwarearchitekturen und Frameworks aufBasis der JEE Plattform Serviceorientierte Architekturen und Portaltechnologien imKontext der Versicherungs- und Banken-BrancheDr. Halil-Cem GrsoySenior Software EngineerTtigkeitsschwerpunkte: SOA und Integrationsprojekte auf Basis von JEE / Spring Build- & Konfigurationsmanagement22.09.2011 2 SBT & Gradle 3. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 3 SBT & Gradle 4. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 4 SBT & Gradle 5. Buildmanagement Use Cases22.09.2011 5 SBT & Gradle 6. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 6 SBT & Gradle 7. Ant - KernfeaturesImperative AnsatzTarget FunktionenTasksAktionen javac delete mkdir junit ...22.09.2011 7 SBT & Gradle 8. Ant - Kritikpunkte Programmieren in XML keine Vorgaben, wie die Ressourcen eines Ant-Scripts strukturiert sein sollen (src, dist, lib -Ordner) keine Standard fr Target-Namen (Build, Run,Compile, usw.) kein Dependency-Management ...22.09.2011 8 SBT & Gradle 9. Ant Repository Server Welche Bibliotheken werden in welcher Versionwofr bentigt: Welche Abhngigkeiten habe ich zur Compile,Runtime und Test Wie kann ich meine Abhngigkeiten effizientVerwalten Wie kann ich Versionskonflikte zwischen denBibliotheken einfacher identifizieren Wie kann ich leichter Reproduzierbarkeit vonBuilds sicherstellen Wie gestallte ich meine Buildskripte bersichtlichund wartungsfreundlich22.09.2011 9 SBT & Gradle 10. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 10 SBT & Gradle 11. Maven22.09.2011 11 SBT & Gradle 12. Maven22.09.2011 12 SBT & Gradle 13. Maven Repositories = Instabil Transitive Dependencys Lizenzen! Interne Plugins> The latest and greatest> Maven A != Maven B22.09.2011 13 SBT & Gradle 14. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 14 SBT & Gradle 15. Gradle - EssentialsBuildsprache basiert auf Groovy Initiator: Hans Dockter Projektseite: http://gradle.org/niedrige Einstiegshrde applay plugin: java22.09.2011 15 SBT & Gradle 16. Gradle - Essentials Convention over Configuration Standardkonventionen basieren aufMaven Pluginkonzept geeignet fr die diversen Sprachen Java, Groovy, Scala Repository Enabled> filebasiert oder Maven Repository> automatiserte POM Erstellung taskbasiert und leicht erweiterbar doFirst/doLast Konfiguration der Tasks (deklarativ) Tasktypen definieren das wie (imperativ)22.09.2011 16 SBT & Gradle 17. Gradle - Essentials Abhngigkeitsstruktur der Tasks wird als DAG aufgebaut> Hook Methoden im Buildlifecycle deterministische sequentielle Abarbeitung beliebig viele Artefakte pro Projekt Inkrementelle Builds Zugriff auf das Gradle Objektmodell Multi-Project Builds Ant Integration22.09.2011 17 SBT & Gradle 18. Gradle - Essentials Gradle Wrapper Testing enabled> Parallele Unit Tests> Seperate JVM fr Unit Test> Neustart der JVM nach X Test konfigurierbar> Debug Modus startbar22.09.2011 18 SBT & Gradle 19. Gradle build.gradle22.09.2011 19 SBT & Gradle 20. Gradle User Interface22.09.2011 20 SBT & Gradle 21. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 21 SBT & Gradle 22. SBT - EssentialsSimple Build Tool In Scala implementiert Fr Scala-Projekte aber auch Java! Inzwischen Teil des Typesafe-Stacks22.09.2011 22 SBT & Gradle 23. SBT - Essentials Projekt sehr einfach zu initialisieren:> JAR herunterladen Home: https://github.com/harrah/xsbt/wiki> Starten wartenhttp://www.flickr.com/photos/carbonnyc/64581364/22.09.2011 23 SBT & Gradle 24. SBT - Essentials Konfiguration> In Scala-Klassen Convention over Configuration> Dokumentation ? Erweiterungen> In Scala> Plugins> Processors> Actions22.09.2011 24 SBT & Gradle 25. Basic Configuration Simple Konfiguration durch Konfigrationsdatei mit eigener DSL Ab 0.10.x, bis 0.7.x nur ber Scala-Klassenname := "ScalaTrainversion := "0.1organization := "de.adesso.hgujavacOptions ++= Seq("-source", "1.6", "-target", "1.6")scalacOptions += "-deprecationscalaVersion := "2.8.1libraryDependencies += "org.mockito" % "mockito-all" % "1.8.5" % "testlibraryDependencies+= "org.scala-tools.testing" %% "specs" % "1.6.7libraryDependencies+= "org.scala-tools.testing" %% "scalacheck" % "1.8"22.09.2011 25 SBT & Gradle 26. SBT Full Configuration Einfache eigene Tasks innerhalb der Projektkonfiguration> Klasse unter project/build/import sbt._object MyBuild extends Build {lazy val root = Project("root", file(".")) aggregate(sub1)configuration.lazy val sub1: Project = Project("sub1", file("a")) dependsOn(sub2 % "test")project.lazy val sub2 = Project("sub2", file("b"), delegates = root :: Nil)}22.09.2011 26 SBT & Gradle 27. SBT - Dependencys Dependency Management> Manuell mglich (lib-Verzeichnis)> POM, Ivy> Konfigurationen libraryDependencies += groupID % artifactID % revision22.09.2011 27 SBT & Gradle 28. SBT - Dependencys Transitive Dependencys ausklammernlibraryDependencies += "org.apache.hadoop" % "hadoop-core" % "0.20.2 intransitive() Repositorys definierenscala resolvers += "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots" Publishing> Abhngig von Ivy> Viele Randbedingungen zu beachten wann zieht welche Konfiguration? Tiefe Ivy-Kenntnisse ntig!22.09.2011 28 SBT & Gradle 29. SBT Vorteile> Kein XML, Konfiguration ineigener DSL bzw. Scala> Programmieren> Verzeichnisstrukturen Nachteile (mehr oder weniger)> Konfiguration in Scala / DSL ;-)> Lernkurve> Dokumentation> Ivy-Wissen> Schwache IDEIntegration http://www.flickr.com/photos/lrargerich/3095189225/22.09.2011 29 SBT & Gradle 30. Agenda Buildmanagement Use Cases Ant Maven Gradle SBT Conclusion22.09.2011 30 SBT & Gradle 31. ConclusionPest oder Cholera? Ant und Maven haben ihre Schwchen SBT ist aussichtsreich> Dokumentation der Defaults stark verteilt> Erweiterbarkeit gut> Aktuell nur in der Scala-Welt sichtbar> Schlechte IDE-Integration Gradle, der Anwrter> Erweiterbarkeit recht einfach> Gut lesbare Konfiguration> Gute Untersttzung von Multi-Modul Projekten> Aussichtsreichster Kandidat22.09.2011 31 SBT & Gradle 32. Wir suchen Sie als Software-Architekt (m/w) Projektleiter (m/w) Senior Software Engineer (m/w) jobs@adesso.de www.AAAjobs.de

Recommended

View more >