ID1020 Introduktion av Maven. Dr. Jim Dowling

Relevanta dokument
Testramverk och Model based testing med java i praktiken

FRÅN MAVEN TILL GRADLE

NetBeans 5.5. Avsikt. Projektfönster

Laboration 10 - NetBeans

NetBeans 7. Avsikt. Projektfönster

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Laboration 10 - Eclipse

Att använda Java SE JDK 6

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Föreläsning 2 Verktyg m.m.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Att använda Java SE JDK 6

BizTalk Build & Deploy. Med Jenkins och PowerShell

Inledande programmering med C# (1DV402) Introduktion till C#

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Kompilering av Java-program med eclipse SDK för den som kan BlueJ

Eclipse en handledning

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Bilaga B Specifik programinformation

ID1004 Laboration 3, 5-6 November 2012

Eclipse. Kort genomgång

Versionshantering. Jan Erik Moström

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Programvara på Nada. Johan Berglund Systemgruppen, Nada

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

TDP005, Projekt: objektorienterade system

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

Continuous Integration med Jenkins. Linus Tolke Enea Experts

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Eclipse en handledning

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse

2 Eclipse en handledning

DI Studio nyheter

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

Automatiskt byggande med Ant

Simulering med ModelSim En kort introduktion

Föreläsning 3. Programmering, C och programmeringsmiljö

Document name. Itsy - Systembeskrivning.doc. Gustav Wilhelmsson

Programmering i C++ Kompilering från kommandoraden

Installation av Virtualiseringsplattform

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Installationsmanual Onepix RSS Vatech SVENSK

Laboration 1. Objektorienterad programmering, Z1. Syfte

1 jar-filer. 1.1 Översikt. 1.2 jar-filers struktur. 1.3 jar manifest

Installationsbeskrivning

ID1004 Laboration 4, November 2012

Android översikt. TDDD80 Mobila och sociala applikationer

Implementering av Model- Based Testing i LoadRunner

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Dugga i Grundläggande programmering STS, åk

Lite mer om CGI-programmering

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Tentamen TEN1 HI

Release, deploy och distribution vid pluginutveckling

2I1049 Föreläsning 9. Iterativ programutveckling. Iterativ programutveckling. Modularisering, återanvändning och JavaBeans

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Installationsanvisning för kursens programvara på egen dator

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

TDP005. Föreläsning 2. Filip Strömbäck

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Arbetsuppgift 1: På virtuell maskin med Ubuntuserver, skapa katalog och skapa Dockerfile. Skapa ny katalog i din hemmakatalog, med namnet webbserver.

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Validering av XML, Svensk geoprocess Guide för validering av XML, Svensk Geoprocess

JAVA Mer om klasser och objektorientering

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

... Funktionsanrop. Vad händer när man kör ett program?

Tentamen , Grundläggande programmering i Java

Installation och konfiguration av klientprogramvara 2c8 Modeling Tool

Code-Lite tutorial ( /RoJ)

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

Introduktion till Git

Installera din WordPress med 9 enkla steg

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

DB, DATA, LOGIC, EXPOSURE (WEB)

TDDC77 Objektorienterad Programmering

OOP Objekt-orienterad programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Simulering med ModelSim En kort introduktion

Viva la evolución. Peter Backlund

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

TDP005: Introduktion till Make

Transkript:

ID1020 Introduktion av Maven Dr. Jim Dowling jdowling@kth.se

Vad använder ni för byggverktyg? Inget En IDE - NetBeans, Eclipse, IntelliJ, osv. Ant bättre* Maven Gradle *Gradle har en högre inlärningströskel och svagare IDE stöd.

Maven Att bygga ett Java projekt innehåller några av följande steg: Kompilera källkod Kopiera resurser Kompilera och köra tests Paktera ihop projektet Deploy (att ladda upp projektet till någon server) Cleanup (rensa bort gamla filer) 3

Apache Maven Maven är ett byggverktyg till Java Med bra stöd i Netbeans och Intelli-J Maven kan beskriva projekter och konfigurera ett bygge Du behöver inte skriva kod (bara xml) Du konfigurerar plugins för att skrädda sy ditt bygge

Apache Maven De grundläggande idéerna med Maven är: - konvention hellre än konfiguration T.ex., all källkod filer finns under /src T.ex., alla kompilerade klassfiler finns under /target - metadatahantering via POM - livscykel för bygge - beroendehantering - kan byggas ut med Plugins 5

Maven Project Object Model (POM) En pom.xml fil beskriver ett projekt. En pom.xml måste innehålla: GroupID ArtifactID Version En pom.xml kan innehålla: Förälder projekt (Parent POM) Artifakt-Typ T.ex., jarfil Beroenden Plugins Profiler 6

Minimal Projekt Beskrivning i en pom.xml Varje maven projekt behöver: groupid packagenamn i Java artfiactid klassnamn i Java version {Major}.{Minor}.{Maintanence} <?xml version="1.0" encoding="utf-8"?> <project> <groupid>se.kth.id1020</groupid> <artifactid>lab1</artifactid> <version>1.0</version> </project> 7

Beroenden (Dependencies) Ett beroende är ett annat maven projekt som ditt maven projekt behöver för att kompileras/exekveras Beroenden är transitiva När du bygger ett maven projekt, jar filer från beroenden laddas hem och som sparas lokalt i ${user.home}/.m2/repository Inga classpath helvete längre! 8

Beroenden som behövs för ID1020 <dependencies> <dependency> <groupid>edu.princeton.cs.introcs</groupid> <artifactid>algs4-package</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>edu.princeton.cs.introcs</groupid> <artifactid>stdlib-package</artifactid> <version>1.0</version> </dependency> </ dependencies > 9

Beroenden kommer från Repositories Lokal repository ${user.home}/.m2/repository Maven Central alltid används som en repository http://repo1.maven.org/maven2 Vissa beroenden finns inte på Maven Central - Som biblioteken (jar filer) som används i boken Man kan också använda tredje part repositories - Lägg till en <repository> tag i pom.xml http://kompics.sics.se/maven/repository 10

Trejde part Repository <repositories> <repository> <id>sics-release</id> <name>sics Release Repository</name> <url>http://kompics.sics.se/maven/repository</url> </repository> </repositories> 11

Maven plugins Plugins används för allt annat* i maven, t.ex. - Specificera vilken kompilator att använda (jdk 1.6/1.7/1.8) - Exekvera ett maven projekt Man kan också exekvera ett maven projekt direkt från IDE:n - Generera en ueber-jar fil Mer info - http://maven.apache.org/plugins/ *Mavens kärn kommando (clean, compile, package, osv) är inbyggda plugins 12

T.ex., bygga en uber jar med Maven Vi ska använda Apache Maven Shade plugin - http://maven.apache.org/plugins/maven-shade-plugin/ Ändringar i pom filen: <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <version>1.5</version>... </plugin> </plugins> </build> Du måste anropa en plugin för att använda den: >mvn shade:shade 13

Maven Shade plugin inlägget i pom.xml <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <version>1.5</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.manifestresourcetransfo rmer"> <mainclass>se.kth.id1020.recursion</mainclass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> 14

15 Vad gör man med en uber jar? Exekvera jar filen: >java jar target/myproject-shade.jar Exekvera jar filen med argument >java jar target/myproject-shade.jar arg1 arg2 arg3 Exekvera jar filen med en annan Main klass (om ingen Main Class är definierad i Shade plugin) >java jar target/myproject-shade.jar MainKlass

16 Minimal pom.xml for Lab1 in ID1020 (1/4) <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.mycompany</groupid> <artifactid>algs4-test</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupid>edu.princeton.cs.introcs</groupid> <artifactid>algs4-package</artifactid> <version>1.0</version> </dependency>

17 Minimal pom.xml for Lab1 in ID1020 (2/4) <dependency> <groupid>edu.princeton.cs.introcs</groupid> <artifactid>stdlib-package</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.10</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <version>1.5</version> <executions> <execution> <phase>package</phase>

18 Minimal pom.xml for Lab1 in ID1020 (3/4) <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.manifestresourc etransformer"> <mainclass>se.kth.id1020.recursion</mainclass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>

19 Minimal pom.xml for Lab1 in ID1020 (4/4) <repositories> <repository> <id>sics-release</id> <name>sics Release Repository</name> <url>http://kompics.sics.se/maven/repository</url> </repository> </repositories> </project>

Viktigaste Maven commando för ID1020 mvn clean mvn install Man kan länka ihop commando - mvn clean install Andra commando - mvn compile - mvn package - mvn test - mvn site 20

Demo med Netbeans

Bibliotek med Kursboken I boken, använder vi StdIn och StdOut klassen för att läsa och skriva siffror till och från stdin och stdout (dvs., skärmen, filer, osv.) int x = StdIn.readInt(); StdOut.println( value read was: + x); Stopwatch kan användas för att mäta hur mycket tid har gått. Stopwatch sw = new Stopwatch(); // göra ngt System.out.println(sw.elapsedTime()); Tiden sedan sw skapades

Referenser http://maven.apache.org http://tutorials.jenkov.com/maven/maventutorial.html Bokens standard library bibliotek: http://introcs.cs.princeton.edu/java/stdlib/ Bokens java algoritmer bibliotek: http://algs4.cs.princeton.edu/code/