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

OpusCollege and Spring-DM. OSGi based web applications – three strategies OSGi container embedded in another container: OSGi Bridge Server (OBS)  e.g.
Testing Web Applications. Applications Architecture Client Server Architecture.
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.
Managing your dependencies with Xavier Hanin
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
DAIMI(c) Henrik Bærbak Christensen1 JUnit A tool for test case management.
Introduction to CVS 7/3/20151UMBC CMSC 341. Outline Introduction to Source Code Management What is CVS? CVS for Project Submission Basic commands Checkout,
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Measuring Copying.
Tomcat Celsina Bignoli History of Tomcat Tomcat is the result of the integration of two groups of developers. – JServ, an open source.
Creating a Hello App Using Google App Engine. What are Google apps? Apps is an abbreviation for application. An app is a piece of software. It can run.
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.
Chapter 3 Navigating a Project Goals & Objectives 1.Get familiar with the navigation of the project. How is everything structured? What settings can you.
OSGi.
CDM Developer Workshop. TDWG Andreas Kohlbecker Taxonomic Workflow in the EDIT Platform for Cybertaxonomy Purpose What do you want from this workshop?
|Tecnologie Web L-A Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse e Tomcat
10/5/2015CS346 PHP1 Module 1 Introduction to PHP.
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
Cloud Computing Computer Science Innovations, LLC.
Team-Oriented Development with CVS and Eclipse Presented June 9, 2004 Manchester Java Users Group Meeting By Gregory C. Larkin.
Artifact Management Managing Maven and other artifacts in Perforce.
Maven for building Java applications By Nalin De Zoysa
Henrik Bærbak Christensen1 Build Management Clean environment that works...
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.
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.
Deploying Elastic Java EE Microservices in the Cloud with Docker
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.
Version Control Systems
CS5220 Advanced Topics in Web Programming Version Control with Git
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
The eclipse IDE IDE = “Integrated Development Environment”
Software Architecture in Practice
CS520 Web Programming Introduction to Maven
Java Game Engine Setting It Up.
Tomcat Celsina Bignoli
OFBiz Internals.
CS5220 Advanced Topics in Web Programming Version Control with Git
课程名 编译原理 Compiling Techniques
Andrew Pruski SQL Server & Containers
Version Control Systems
Zlatko Stamatov JavaSkop 13 December 2015
Part 1: Editing and Publishing Files
Webscarab, an introduction.
JavaTeaching and Importing a github repository
Container technology, Microservices, and DevOps
Container technology, Microservices, and DevOps
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Building LabKey with Gradle
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Presentation transcript:

Software Engineering and Architecture Dependency Management

Henrik Bærbak Christensen Motivation Software Reuse The holy grail in software engineering for decades… Lot of hard work and research, and relatively little success Shaw: It is not the functionality, it is the packaging Until… The big open source organizations and the companies that does not earn their money from selling software began publishing libraries Apache, Eclipse, Goggle, Amazon, … CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Example I want to make a ”Hello World” web service ala Exercise: How much coding would that take given only raw Java language? CS@AU Henrik Bærbak Christensen

Reusing Web Frameworks One web framework is ‘Spark’ which allows pretty compact code… All nice and well… But… You need the Spark library Which depends on a lot of other reusable libraries… Core dependency: Eclipse Jetty, open source web server To clean ivy cache: c:\users\(user)\.ivy2 CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen The Dependencies 17 Libraries! Tedious and error prone to Fetch all libraries in proper version Very long classpath in Java CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen The Solution Dependency Management Tool to resolve the transitive closure of dependencies Locate and download library, recursively locate and download any dependencies Resolve conflicts A version 1 depends on B version 1 and C version 3 B version 1 depends on D version 2 C version 3 depends on D version 3 Tool will eject D version 2 and only provide D version 3 A Dependency Description Stating which libraries we need And – repositories of libraries Maven repository ‘mvnrepository.com’ is a major player! CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen SWEA Context Gradle is a modern build management tool and it has already built-in dependency management !!! Earlier SWEA/dSoftArk used Ant which does not… And then had to use a plug-in tool, Ivy, to help out CS@AU Henrik Bærbak Christensen

The Process Goal: I want Spark-java library in my project Open mvnrepository.com and search for the library ‘sparkjava’ Take care: Apache has a project with the same name  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen The Process Select the project, version, and click the ‘gradle’ pane Now you can copy the gradle declaration… Which is the text that goes into your dependency description CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen The Process … and paste it into your build.gradle CS@AU Henrik Bærbak Christensen

Demo Gradle will: * Check if the .jar is in local cache * If not, download it from mvnrepository * Recurse on any dependencies * Set the CLASSPATH correctly CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen JCenter / BinTray An alternative (which Gradle defaults to) to Maven Repository is JCenter. Is free to upload to And, less cumbersome than MvnRepository MiniDraw is hosted there CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen DM in SWEA We will in SWEA only pull dependencies And you will always be given the build.gradle files Pushing to a repository is out-of-scope for our course Security you know Need to create credentials, secret tokens for pushing, and stuff... CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Summary Declarative approach State what you need, not how to get it A DSL (domain specific language) for defining dependencies A dependency description Tool (Gradle ) to resolve Public repositories with numerous libraries Possible to create own repos’ and publish team/organization specific libraries as well… CS@AU Henrik Bærbak Christensen