Why switch exist-db from Ant to Maven?

Similar documents
Simplified Build Management with Maven

Gradle Leveraging Groovy for Building Java Applications. Hans Dockter Gradle Project Lead

Build Automation Kurt Christensen

Maven 2 & Continuum. by Trygve Laugstøl

This tutorial explains how you can use Gradle as a build automation tool for Java as well as Groovy projects.

What is Maven? Apache Maven is a software project management and comprehension tool (build, test, packaging, reporting, site, deploy).

Apache Buildr in Action

Software Engineering - Development Infrastructure 2. Kristjan Talvar Nortal

Who Moved My Module? 1

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

Testing with Soap UI. Tomaš Maconko

Seven Habits of Highly Effective Jenkins Users. Andrew Bayer Cloudera OSCON Java 2011

MAVEN MOCK TEST MAVEN MOCK TEST I

... Fisheye Crucible Bamboo

Publishing automation using DevOps STC India Annual Conference. Srikanta Dash and Visagan Santhanam, Unisys India Pvt. Ltd.

Distributing JavaFX Applications with Java WebStart and Artifactory

I Got My Mojo Workin'

Introduction to project industrialization using Maven YaJUG 06/10/2009. Copyright Pierre-Antoine Grégoire License Creative Commons 2.

TM DevOps Use Case TechMinfy All Rights Reserved

SpringSource Tool Suite M2

Tuesday, April 26, 2011

Construction: version control and system building

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Software Tools Subversion

MAVEN INTERVIEW QUESTIONS

Package Management and Build Tools

Maven Introduction to Concepts: POM, Dependencies, Plugins, Phases

Hello Maven. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

Construction: version control and system building

Con$nuous Integra$on Development Environment. Kovács Gábor

#jenkinsconf. Jenkins user plugin. This time it's. Jenkins User Conference Israel. Shiran JFrog

The 7 Sins of Software Engineers in HEP

Outline. Sin#1: Tool-coupled Productivity. Establishing the Context. The 7 Sins of Software Engineers in HEP. The Context (HEP) The Sins!

This checklist tells you how to create accounts and obtain permissions needed by Hive contributors. See the Hive website for additional information.

Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

B3 Modeling Unbreakable Builds. Eclipse Modeling Day Nov 16-19, Ed Merks, Bjorn Freeman-Benson, Miles Daffin

Selenium Testing Course Content

Checking Out and Building Felix with NetBeans

Subversion Repository Layout

C++ Binary Dependency Management with Gradle. Hugh Greene

maven Build System Making Projects Make Sense

M E R C U R I A L (The Source Control Management)

Build and Provision: Two Sides of the Coin We Love to Hate

JVM Survival Guide. Hadi Hariri

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

Struts 2 Maven Archetypes

The Workshop. Slides (you have a copy in the zip) Practical labs Ask questions

Introduction to Revision Control

Oracle Developer Depot Technical Review

Sonatype CLM - IDE User Guide. Sonatype CLM - IDE User Guide

Version Control Systems

Copyright 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12

Gradle. The Basics and Beyond

Error Code 407 Proxy Authentication Required Maven

Getting Started with Gradle

SpringSource Tool Suite 2.7.1

Generating A Hibernate Mapping File And Java Classes From The Sql Schema

Topics covered. Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session. Maven 2

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

Index. Bitwise operations, 131. Cloud, 88, 101

What is Subversion and what does it do?

Testing Lucene and Solr with various JVMs: Bugs, Bugs, Bugs

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

TOP REASONS WHY YOU SHOULD SWITCH TO MAVEN 3

Directory structure and development environment set up

Technology Background Development environment, Skeleton and Libraries

An Integrated Approach to Managing Windchill Customizations. Todd Baltes Lead PLM Technical Architect SRAM

TOOLING SUPPORT FOR ENTERPRISE DEVELOPMENT RYAN CUPRAK & REZA RAHMAN

The Actual Real World at EclipseCon/ALM

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

Build Tools. Software Engineering SS A tool was needed. Agenda for today. Build tools. Software complexity. Build tools

Build Tools. Software Engineering SS 2007

Maven. INF5750/ Lecture 2 (Part II)

Revision control. INF5750/ Lecture 2 (Part I)

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.

What s new in IBM Operational Decision Manager 8.9 Standard Edition

Advanced Dependency Management with Gradle. Benjamin Muschko, Gradle Inc.

Getting Started With Cpsc (Advanced) Hosted by Jarrett Spiker

Andy Clement, SpringSource/VMware SpringSource, A division of VMware. All rights reserved

Enabling Application Lifecycle Development in JDeveloper

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

Jahia Studio JAHIA DOCUMENTION

Maven in the wild. An introduction to Maven

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

Build. System building

Technology Background Development environment, Skeleton and Libraries

J, K F, G, H. Library/framework, 168 LIKE() predicate, 142 Load-balancing server (LBS), 120 Lock on check out (LOCO), 1

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

Index. BigBadGuiTools (BBGT), 186 Business logic and data layer, 32 Business requirements

Thomas Pelaia II, Ph.D. XAL Workshop 2012 December 13, 2012 Managed by UT-Battelle for the Department of Energy

State of JTS. Presented by: James, Jody, Rob, (Martin)

REASONS TO USE A BINARY REPOSITORY MANAGER WHEN DEVELOPING WITH. White Paper

Powsybl basics, IIDM

Getting started with Geomajas. Geomajas Developers and Geosparc

Tattletale. What is Tattletale? Enterprise archives JBoss Application Server 7 Putting it all together Roadmap

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017

SP Front Office. IP Key LA workshop at INDECOPI, Lima, Peru. Martin Beckman, Emmanuel Collin, Antonio Grau, Arjeton Uzairi November 2018

Source Management (Version Control) Installation and Configuration Guide. Version 8.0 and Higher

S A M P L E C H A P T E R

Software Building (Sestavování aplikací)

Transcription:

exist-db Developers Meetup Monday, 29 th March 2011 @ Prague Why switch exist-db from Ant to Maven? adam@exist-db.org www.existsolutions.com

Why move away from Ant? The Current Situation Lots of pain associated with our current Ant build system Completely ad-hoc project layout 10 years of evolution with lots of committers = a big heap of code + many different approaches Maintenance is difficult Integrating exist-db cleanly with another project is almost impossible Developer learning curve is steep! After 5+ years, I still do not know all the Ant targets (or care about them). But... It works!

Why move away from Ant? The Current Situation the hard facts Our current Ant build system comprises - > 6807 lines of Ant (many include files) Maintaining relative paths from include files is tricky > 182 lines of XSL > 227 lines of build.properties 99 lines of Bash script 92 lines of Batch script 2 Ant plugins IzPack and Ant Fetch In addition we have to manually and independently maintain - Support for 3 IDE's (Eclipse, NetBeans, IntelliJ)

Why move away from Ant? There 'must' be an easier way! The Goal Make Life Simpler! Spend less time hacking the build scripts and more time hacking code. Desired Outcome - Reduction in build script code Reduction in complexity Automated dependency management How to achieve? Reduce explicit definitions Build by convention Specify the 'What and not the How' Build systems have improved e.g. Buildr, Gradle, Maven

Why Maven and not... There 'must' be an easier way! Maven provides both building and dependency management We need both Yes, We could just use Ant for building and Ivy for dependency management If you only want to solve ½ a problem! Why Maven and not X? Looked at others - Gradle, non-xml Syntax and dependency on Groovy Buildr, non-xml Syntax and dependency on Ruby Not well established Maven does what we need We already have Maven knowlegde in the exist-db community

What Maven gives you Robust dependency management Keeping JARs in SVN is wrong! JARs are duplicated on every copy/branch operation. JAR associated Source Code and JavaDoc is hard. Increases SVN checkout size and time. Multiple versions of multiple JAR's have to be maintained. Reducing JAR dependencies by using Reflection is wrong! Complicates code, hides intention. Dependencies are not self-evident. Fails later rather than sooner! SVN provides no dependency management, protection or conflict resolution! Manually manage versions of JAR's you depend on (and that they depend on). Manually test for broken references when new versions of JAR's are added. Manually test dependency references when you add new versions of JAR's.

What Maven gives you The features for us Standard project layout by convention Customisable (best avoided) Now used for almost all other Java build tools Single POM (configuration) file* - Define the 'What' not the 'How' Define and resolve the dependencies externally from VCS. Manage the builds Manage the releases and VCS branched (including JAR, WAR, IzPack artifacts) Produce resources that integrate well with other projects and build systems Support multiple IDE's with zero overhead (NetBeans, Eclipse, IntelliJ etc)

The Case for Maven What we gain Simpler more powerful build system Automated Dependency Management Release management First step of exist-db Modularisation... Its easier to break a project into modules when your build system supports this at almost no cost Why modularise exist-db? Cleaner separation of concerns Faster builds Faster tests and test feedback Easier to contribute

exist-db Comparison With and without manual dependencies What impact do JAR's in SVN have on exist-db? trunk with JARs trunk without JARs Change Size 111 MB 78 MB -33MB / ~30% Checkout Time 07:32 05:18 02:14 / ~30% On-Disk Size (with.svn metadata) 249 MB 182 MB -67MB / ~27%

Questions and Answers Any questions?