Software Engineering and Architecture

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
Introduction to Maven Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to the Java Stack.
Build your Android App with Gradle Android new build system.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
Maven: Build and project management in the 21th century.
© S Ramakrishnan1 Systems V & V, Quality and Standards Dr Sita Ramakrishnan School CSSE Monash University.
Winter 2005Jason Prideaux1 Apache ANT A platform independent build tool for Java programs.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Automating the Build Process using ANT SE-2030 Dr. Mark L. Hornick 1.
Continuous Integration after Hudson, CruiseControl, and Home Built Mile High Agile 2011 – Mark Waite.
Using Ant to build J2EE Applications Kumar
CSE 403 Lecture 11 Static Code Analysis Reading: IEEE Xplore, "Using Static Analysis to Find Bugs" slides created by Marty Stepp
CHAPTER 4 SPRING FRAMEWORK Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
APACHE MAVEN Bhavana Sudharshan Jaydeep Patel. Introduction What is Maven? “Maven is a software management and comprehension tool based on the concept.
Starting Chapter 4 Starting. 1 Course Outline* Covered in first half until Dr. Li takes over. JAVA and OO: Review what is Object Oriented Programming.
Chapter 3 Navigating a Project Goals & Objectives 1.Get familiar with the navigation of the project. How is everything structured? What settings can you.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Automating the Build Process using Ant SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Apache Ant Java-Based Build Tool. Making your builds boring… Building projects should be easy and standardized. You should not be spending a substantial.
|Tecnologie Web L-A Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse e Tomcat
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
COP 3330 Notes 1/12. Today's topics Downloading Java and Eclipse Hello World Basic control structures Basic I/O Strings.
July 2011CMSC 341 CVS/Ant 1 CMSC 341 Java Packages Ant CVS Project Submission.
Automating the Build Process using ANT SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
Software Development COMP220/COMP285 Seb Coope Introducing Ant These slides are mainly based on “Java Development with Ant” - E. Hatcher & S.Loughran.
14th Oct 2005CERN AB Controls Development Process of Accelerator Controls Software G.Kruk L.Mestre, V.Paris, S.Oglaza, V. Baggiolini, E.Roux and Application.
Maven for building Java applications By Nalin De Zoysa
Henrik Bærbak Christensen1 Build Management Clean environment that works...
Ant / continuous integration. Turning Client Vision into Results 2 Outline presentation Introduction Ant –History –Concepts –Tasks –Examples –Extending.
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
All the dSoftArk Tools Getting started!. Tools dSoftArk is a semi-realistic, agile, development project –Industrial strength software (programming, TDD,
Software Deployment & Release 26/03/2015 1EN-ICE.
(1) Code Walkthrough robocode-pmj-dacruzer Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Using Ant in Eclipse Dwight Deugo Nesa Matic
CS520 Web Programming Introduction to Maven Chengyu Sun California State University, Los Angeles.
An Introduction to Ant. What is Ant? How do you use it? Why would you want to?
Maven and Jelly James Strachan. Introduction Maven and Jelly are both Apache projects at Jakarta Ultimately both will be top.
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
This material is based upon work supported by the U.S. Department of Energy Office of Science under Cooperative Agreement DE-SC , the State of Michigan.
CS210 Intermediate Computing with Data Structures (Java)
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
CST 1101 Problem Solving Using Computers
Maven 04 March
CS520 Web Programming Introduction to Maven
CMS DCS: WinCC OA Installation Strategy
Plan What is Maven ? Links : mvn command line tool
Modern “Servlet” Development
Play Framework: Introduction
OFBiz Internals.
Zlatko Stamatov JavaSkop 13 December 2015
Advanced Programming Fall 2017.
Chapter 7 –Implementation Issues
Nilanjan Banerjee Java Packages Ant CVS Project Submission
Build Tools Software Engineering SS 2007
Continuous Integration
Software Engineering and Architecture
Container technology, Microservices, and DevOps
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Building LabKey with Gradle
Software Engineering and Architecture
Presentation transcript:

Software Engineering and Architecture Build Management

Henrik Bærbak Christensen Motivation Oracle/Sun provides Java SDK free of charge provides standard command line tools: javac, java, ... These are sufficient only for very small systems javac only compile one directory at a time javac recompiles everything every time Large systems require many tasks manage resources (graphics, sound, config files) deployment (making jars, copying files) management (javadoc, coverage, version control) Reliability require reliable processing Creating the system exactly the same way every time Henrik Bærbak Christensen

Henrik Bærbak Christensen Build-Management This problem is denoted: Computer Scientists’ standard solution: a tool... The tool read a build-description Example: Make (Feldmann, 1979) Henrik Bærbak Christensen

Henrik Bærbak Christensen History… Make CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen The Two Ways Programming languages comes in flavors Procedural languages ‘express how to achieve a goal’ Declarative languages ‘express what goal you want to achieve’ Old time build languages were procedural (ex: make) Write code to compile all source files Modern build languages are declarative (almost) ‘compileJava’ is built into the system CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Script Parts Henrik Bærbak Christensen

Henrik Bærbak Christensen Apache Ant Ant is a build-management tool geared towards Java  has some strong build-in behavior javac on source trees and does smart recompile  independent of large IDEs  was created on the XML buzzword wave so it is verbose  is very evolutionary in its design Do the same thing in a zillion different ways No ‘conceptual integrity’ Henrik Bærbak Christensen

Henrik Bærbak Christensen Example Targets ‘test’ … Dependencies ‘test’ d.o. ‘build-all’ d.o. … Procedures <javac ….> Properties {$build-directory} CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen As In CS@AU Henrik Bærbak Christensen

2018 is the first year after switching from Ant… Gradle in SWEA 2018 is the first year after switching from Ant…

Henrik Bærbak Christensen Gradle Gradle is a convention-based build-management tool Convention over configuration is the mantra! Which means You cannot see a damn thing about what it does in its build description (build.gradle) !!!    You have to know all the conventions or google your butts off  Conventions: A fixed set of targets are defined (compileJava, test, …) The source folder hierarchy and naming are hard coded! The ‘build description’ is in build.gradle in the project root A bit of help: ‘gradle tasks’ will display all known targets. CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Gradle build.gradle The simplest build.gradle file for java dev, contains one line apply plugin: ‘java’ And now you can do all basic BM tasks (except running a program! ) gradle test Will compile all production code, all test code, and execute all Junit code in the ‘test’ source tree CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Gradle How does it work? Magic??? By convention You must put your code in the right folders! src/main/java/HERE src/test/java/HERE Predefined targets Like ‘test’, ‘compileJava’, … By plugins Which are procedural groovy code to inject into the gradle framework (‘framework’ is a central topic of this course) CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Gradle Gradle is also a dependency-management tool Ex: we need hamcrest Gradle will download ‘org.hamcrest….:1.3’ from JCenter on the internet, and set the classpath correctly CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Gradle Gradle combines both declarative and procedural If you follow ‘gradle conventions’ it knows what you want to do gradle test, etc. And ‘task’ let you write complete groovy code, if you need it CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Analysis Predefined Predefined Predefined CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen In SWEA… Build management using Gradle is a postulate and requirement No exercises in making Gradle targets, groovy code, etc. Required for easy hand-in and easing the TA work Hard requirement: ‘gradle test jacocoTestReport’ must always run without errors, and must always execute all your tests! CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Other BM tools CS@AU Henrik Bærbak Christensen

Maven Ant is pretty old… Maven It is a Domain Specific Language and procedural Tasks define ‘what to do’ Maven ‘Convention over configuration’ You follow the conventions and then Maven knows all the tasks! It is a DSL and it is declarative mvn compile, mvn test, mvn install Very very good for publishing libraries on Maven repository Maven directly supports dependency management (POM) Ant requires help from Ivy to do that No support for running code  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Maven POM Basic POM just states what the identity of your project is Note: This simple POM can handle every classic aspect (except running a program!) Yeah – we all love XML  CS@AU Henrik Bærbak Christensen