BUDOWANIE APLIKACJI. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Podobne dokumenty
Wprowadzenie do narzędzia MAVEN

Narzędzia budowy aplikacji Java

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Maven II. Jakub Wojtaszczyk Piotr Tabor

Platformy Technologiczne

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

1. Wprowadzenie. 2. Instalacja i uruchomienie. 3. Projekt i POM

Dokumentacja kompilacji źródeł aplikacji 1.0

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Artifactory Power Pack Pro w procesie wytwarzania oprogramowania. Artifactory Power Pack Plugins Artifactory License Control

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Instrukcja instalacji

Platformy Technologiczne

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Załącznik 1 instrukcje instalacji

Prezentacja przygotowana na potrzeby przedmiotów: Sieciowe Systemy Baz Danych Biznesowe Aplikacje Rozproszone Wielowarstwowe Aplikacje Sieciowe

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Platformy Technologiczne

Programowanie obiektowe zastosowanie języka Java SE

BIOWEB INSTRUKCJA URUCHOMIENIA W IDE ECLIPSE RATIONAL SOFTWARE ARCHITECT

Tworzenie oprogramowania

MentorGraphics ModelSim

Program szkolenia: Continuous Integration i Git

Załącznik 1 instrukcje instalacji

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Instrukcja laboratoryjna cz.3

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Środowiska wirtualne i zarządzanie zależnościami w Pythonie. Piotr Grzesik

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Programowanie niskopoziomowe

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

SzukamNeta.pl Wicket, Maven, SVN, Hudson - tutorial

Wykaz zmian w programie WinAdmin Replikator

Programowanie obiektowe

MAMP Mac + Apache + MySQL + PHP. Kraków 8 czerwca 2009, Adam Strzelecki,

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Dokumentacja użytkownika

Continuous Integration z ClickOnce

Instrukcja konfiguracji Comarch ERP Altum z komponentem Crystal Reports w wersji

Generatory pomocy multimedialnych

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

WPROWADZENIE DO JĘZYKA JAVA

Java jako język programowania

Aplikacje internetowe - laboratorium

Przetwarzanie danych w chmurze

Ćwiczenie 1. Przygotowanie środowiska JAVA

Hurtownie danych - przegląd technologii

Wprowadzenie do biblioteki klas C++

Aktualizacja środowiska JAVA a SAS

Słowa kluczowe jak góry lodowe

The current software tools for the JEE platform

XML i nowoczesne technologie zarządzania treścią 2007/08

Open Source w służbie developerom

Hibernate mapowanie baz danych

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Środowisko programisty. Środowisko programisty 1/35

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Program szkolenia: Jenkins - Continuous Integration

Laboratorium 01: Poznanie środowiska programowania w języku Java [2h]

Język UML w modelowaniu systemów informatycznych

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Platforma Eclipse: Pluginy, RCP oraz GEF

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Tworzenie i korzystanie z plików JAR. Biblioteka JFreeChart

ZARZĄDZANIE DOKUMENTACJĄ. Tomasz Jarmuszczak PCC Polska

Java Podstawy. Michał Bereta

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

ZSBD ćwiczenie 4. Obiektowe systemy zarządzania bazą danych. Przygotowanie środowiska pracy. Wymagania: ZSBD ćwiczenie 4

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

JDK 7u25 NetBeans Zajęcia 1 strona - 1

Serwery LDAP w środowisku produktów w Oracle

Rozdział 1. Informacje ogólne

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Podstawowe wykorzystanie Hibernate

Michał Olejnik. 22 grudnia 2009

Drzewo wad (2) Dodatkowo możliwe jest przypisanie maszyny/ urządzania/źródła dla każdej z faz procesu

Pracownia Technik Obliczeniowych

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wprowadzenie do Java Web Start

ZAPOZNANIE SIĘ Z TWORZENIEM

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Transkrypt:

BUDOWANIE APLIKACJI Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska

Budowanie aplikacji 2 *.java resources punkt wejścia javac *.class *.properties *.css *.fxml *.png MANIFEST.MF Manifest-Version: 1.0 Built-By: stawrul Build-Jdk: 1.8.0_102 Main-Class: net.stawrul.app Class-Path: lib/log4j.jar biblioteki/ zależności jar (zip) app.jar biblioteki oraz ich zależności log4j.jar lombok.jar wersja dystrybucyjna Uruchomienie aplikacji: $ java jar app.jar Dwuklik na pliku w trybie graficznym

UberJar 3 Standardowe archiwum JAR nie zawiera zależności programu Biblioteki zewnętrzne jako osobne pliki.jar w lokalizacjach wskazanych przez atrybut Class-Path pliku MANIFEST.MF Kłopotliwa dystrybucja aplikacji wiele plików UberJar archiwum zawierające aplikację oraz wszystkie jej zależności Biblioteki zewnętrzne wypakowane do głównego JARa aplikacji Łatwa dystrybucja pojedynczy plik Większy rozmiar JARa, dłuższy czas budowania Archiwa WAR (Web ARchive) oraz EAR (Enterprise ARchive) domyślnie zawierają zależności

Budowanie aplikacji 4 Na szczęście nie musimy robić tego ręcznie Popularne narzędzia à Maven Gradle n Domyślny dla aplikacji na Androida Ant najstarszy Java Tools and Technologies Landscape Report 2016: https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/

5 Maven

Maven 6 Narzędzie do zarządzania projektem Scaffolding (archetypy) Zarządzanie zależnościami (biblioteki zewnętrzne) Budowanie projektu Generowanie dokumentacji (javadoc) Uruchamianie testów n Generowanie raportów Pierwsze wydanie: lipiec 2004 Obecnie wersja 3.3.x (2017)

Maven 7 Nie jest związany z żadnym IDE i nie wymaga żadnego IDE do działania ale wszystkie popularne IDE posiadają integrację z Mavenem Samodzielne narzędzie Możliwe do wywołania w konsoli, np.: $ mvn package Możliwe do użycia w skryptach lub z poziomu automatycznych narzędzi n np. serwer continuous integration

Minimalny pom.xml 8 pom.xml główny plik konfiguracyjny Convention Over Configuration <project> <modelversion>4.0.0</modelversion> <groupid>pl.edu.pg.eti</groupid> <artifactid>pt-sample</artifactid> <version>1.3.1</version> </project> grupa wersja nazwa artefaktu (biblioteki/aplikacji)

<project> <modelversion>4.0.0</modelversion> <groupid>net.stawrul.sockets</groupid> <artifactid>server</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!--zależności--> </dependencies> <build> <plugins> <!--wtyczki--> </plugins> </build> </project> minimalna wersja JVM do uruchomienia aplikacji kodowanie plików projektu 9 Dodatkowe elementy wersja języka dla plików źródłowych

Cykle życia 10 Cykle życia (ang. lifecycles) stanowią podstawową koncepcję Mavena Wbudowane cykle życia: default umożliwiający budowanie projektu, jego wdrażanie i publikację artefaktów clean umożliwia wyczyszczenie projektu (usunięcie wszystkich plików powstających w cyklu default) site umożliwiający wygenerowanie statycznych stron HTML z dokumentacją projektu

Cykle życia i ich fazy 11 Każdy cykl życia składa się z faz (ang. phases) Główne fazy cyklu default: validate weryfikacja czy projekt i jego konfiguracja są kompletne compile kompilacja źródeł test testy jednostkowe package budowanie archiwum JAR/WAR/EAR verify testy integracyjne, QA install instalacja artefaktu w lokalnym repozytorium n Inne lokalne projekty mogą korzystać z zależności deploy publikacja artefaktu w zewnętrznym repozytorium n Inni deweloperzy mogą korzystać z zależności

Cykle życia, ich fazy i cele 12 Każda faza składa się z listy celów (ang. goals) Wtyczki mogą dodawać własne cele do faz wzbogacając proces budowania aplikacji Fazy i cele można wywoływać z wiersza poleceń, np.: $ mvn package Najpierw wykonane zostaną wszystkie fazy poprzedzające package w cyklu życia default

Podstawowe polecenia 13 $ mvn package Zbudowanie projektu (kompiluje tylko pliki, które uległy zmianie od poprzedniej budowy) $ mvn clean Wyczyszczenie projektu $ mvn clean package Przebudowanie projektu: wyczyszczenie, a następnie kompilacja wszystkich plików źródłowych projektu

14 Zarządzanie zależnościami Fragment drzewa zależności typowej aplikacji internetowej

Zależności projektu 15 Biblioteki używane w naszym projekcie często zbudowane są w oparciu o inne biblioteki Te inne biblioteki opierają się na jeszcze innych bibliotekach n Zależności mają swoje własne zależności powstaje drzewo zależności Konkretna wersja biblioteki zależy od konkretnych wersji swoich zależności Aktualizacja biblioteki pociąga konieczność aktualizacji całej gałęzi drzewa zależności

Zależności projektu 16 Zależnościami można zarządzać ręcznie Google.com szukamy strony projektu Wchodzimy na stronę biblioteki Dział Downloads Pobieramy archiwum zip Rozpakowujemy Kopiujemy plik.jar z biblioteką do naszego projektu I tak dla każdej zależności w drzewie Ręczne zarządzanie zależnościami jest czasochłonne, kłopotliwe i po prostu nudne

Automatyczne zarządzanie zależnościami 17 Kluczowy element dla sukcesu Mavena Inne języki doczekały się podobnych narzędzi, np.: NuGet (.NET, 2010), npm (Node.js, 2010), pip (Python, 2011), Composer (PHP, 2012), Bower (web front-end, 2012) Zależności projektu definiowane w pliku pom.xml Wszystkie biblioteki (wraz z ich zależnościami) automatycznie pobierane z repozytoriów zależności Każda biblioteka w repozytorium zależności posiada własny plik pom.xml Zależności pobierane na etapie budowania aplikacji (faza package)

Repozytoria zależności 18 Maven Central repozytorium domyślne, publiczne https://search.maven.org/ Zewnętrzne repozytoria publiczne (3 rd party) np. https://repository.jboss.org/nexus/ Własne repozytoria prywatne np. wewnętrzne biblioteki używane w firmie Nexus Repository OSS n Bower, Docker, Maven, npm, NuGet, PyPI, RubyGems Repozytorium lokalne Lokalnie zbudowane artefakty na komputerze dewelopera Cache dla bibliotek pobranych z zewnętrznych repozytoriów ${user.home}/.m2/repository

Zależności 19 <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <version>1.16.14</version> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency>

Zasięgi zależności: <scope> 20 Compile Wymagane w czasie kompilacji oraz w czasie działania aplikacji Provided Jak wyżej, ale dostarczane przez środowisko wykonawcze, np. serwer aplikacji Runtime Wymagane w czasie działania aplikacji (ale nie w czasie kompilacji) Test Wymagane w czasie uruchamiania testów jednostkowych Import Import zależności z innego pliku pom.xml System niezalecane

Wtyczki 21 Dostarczają dodatkowych funkcjonalności, np.: Wygenerowanie pliku MANIFEST.MF Zbudowanie UberJara Zbudowanie obrazu Dockera Wdrożenie na serwerze aplikacji Wygenerowanie raportu z testów Dołączenie do projektu numeru rewizji z repozytorium kontroli wersji

maven-jar-plugin 22 <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <version>2.6</version> <configuration> <archive> <manifest> <addclasspath>true</addclasspath> <mainclass>net.stawrul.app</mainclass> </manifest> </archive> </configuration> </plugin>

23 Pytania?