Narzędzia budowy aplikacji Java

Podobne dokumenty
Wprowadzenie do narzędzia MAVEN

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

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

Maven II. Jakub Wojtaszczyk Piotr Tabor

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

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

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

Testy jednostkowe. Dzięki takim testom będziesz pewien, jak zachowuje się Twoja metoda w sytuacjach wyjątkowych.

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

Platformy Technologiczne

Programowanie niskopoziomowe

Dokumentacja kompilacji źródeł aplikacji 1.0

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

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

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

Załącznik 1 instrukcje instalacji

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

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

WPROWADZENIE DO INFORMATYKI

Platformy Technologiczne

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

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

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

Tworzenie oprogramowania

Programowanie obiektowe zastosowanie języka Java SE

Java Podstawy. Michał Bereta

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

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Enterprise JavaBeans (EJB)

Instrukcja instalacji

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

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

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

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

Instrukcja obsługi DHL KONWERTER 1.6

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Instalacja NOD32 Remote Administrator

Platformy Technologiczne

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

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

Udostępnianie obrazu z kamer Sanyo HD na stronach WWW PORADNIK

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

Załącznik 1 instrukcje instalacji

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Instrukcja obsługi Multiconverter 2.0

Administratora CSIZS - OTM

Materiały dodatkowe. Raspberry Pi

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Java jako język programowania

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Spring, Maven, Postman, Debugger

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

Ćwiczenie 1. Przygotowanie środowiska JAVA

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Użycie pakietów instalacyjnych.msi w oprogramowaniu WYWIAD Plus

Uruchomienie Raspberry Pi

Wykaz zmian w programie SysLoger

Web Tools Platform. Adam Kruszewski

Projekt: Narzędzia zarządzania testowaniem badanie narzędzia. Część 2.3 Badanie Synapse RT

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

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

METODY REPREZENTACJI INFORMACJI

Platforma Eclipse: Pluginy, RCP oraz GEF

MentorGraphics ModelSim

Instrukcja laboratoryjna cz.3

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Backend Administratora

Wdrożenie modułu płatności eservice. dla systemu PrestaShop

Instrukcja instalacji oprogramowania dla środowiska Linux

Warsztaty: Tworzenie obrazów stacji roboczych

Język UML w modelowaniu systemów informatycznych

Wprowadzenie do Doctrine ORM

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

ZAPOZNANIE SIĘ Z TWORZENIEM

1.Wstęp. 2.Generowanie systemu w EDK

Aplikacje internetowe - laboratorium

Tomasz Greszata - Koszalin

Jednolity Plik Kontrolny w IFK

SysLoger. Instrukcja obsługi. maj 2018 dla wersji aplikacji (wersja dokumentu 2.5)

Programowanie obiektowe

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

oprogramowania F-Secure

Instrukcja konfiguracji funkcji skanowania

Spring Web MVC, Spring DI

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

COMODO IT & Security manager ABC konsoli w chmurze. str. 1. COMODO IT & Security Manager (ITSM) www:

Przykład połączenie z bazą danych

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Hibernate mapowanie baz danych

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

Informatyka I : Tworzenie projektu

Wdrożenie modułu płatności eservice dla systemu PrestaShop

Continuous Integration z ClickOnce

Język Java Technikalia - wstęp do inżynierii oprogramowania

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Transkrypt:

Narzędzia budowy aplikacji Java Narzędzi budowy Narzędzia budowy (kompilacji) jest to narzędzie, które automatyzuje proces oprogramowanie projektu budowlanego. Budowanie projektu zazwyczaj zawiera jedno lub więcej z działań: generowanie kodu źródłowego (Jeśli automatycznie wygenerowany kod jest używany w projekcie). Generowanie dokumentacji z kodu źródłowego. Kompilowanie kodu źródłowego. Pakowania skompilowanego kodu do plików JAR lub plików ZIP. Instalowanie pakietów kodu na serwerze, w repozytorium lub gdzieś indziej.

Stworzenie projektu maven-owego mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app - DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false w Eclipse wystarczy albo new maven project albo configure convert to maven project albo run as maven (profile) eclipse:install Struktura projektu my-app -- pom.xml `-- src -- main `-- java `-- com `-- mycompany `-- app `-- App.java `-- test `-- java `-- com `-- mycompany

`-- app `-- AppTest.java POM.XML <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.app</groupid> <artifactid>my-app</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> <name>maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <properties> <!-- jar versions, for dependency management --> <version.seam>2.2.2.final</version.seam> <version.drools>5.0.1</version.drools> <version.jboss.embedded>beta3.sp9</version.jboss.embedded> </properties> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> </project> o o o groupid Identyfikuje projekt wśród innych projektów. artifactid Nazwa artefaktu (modułu), version Numer wersji. SNAPSHOT, jeśli wersja jest jeszcze rozwijana. Para groupid i artifactid powinna być unikalna Maven wykorzystuje informację z pliku pom.xml (Project Object Model) do budowania projektu. Plik zawiera tag project, w którym obowiązkowo muszą znaleźć się tagi modelversion o wartości 4.0.0 (aktualnie wspierana wersja), groupid, artifactid, version oraz tagi opcjonalne o packaging Określa co ma zostać zbudowane, w tym przypadku plik jar. Jeśli tworzymy aplikację webową będzie to war.

o o o name Nazwa projektu. url Adres strony projektu. properties Miejsce na wartości, których możemy używać w innych miejscach pliku pom.xml za pomocą ${nazwa_ustawienia}. <name>${project.groupid} : ${project.artifactid} : ${project.version}</name> o dependencies Zależności, czyli biblioteki których używamy w projekcie, Zależności i repozytoria to jeden z podstawowych mechanizmów. Maven wykonuje sprawdzenia zależności wymagaych przez projekt. Zależności to zewnętrzne pliki JAR (biblioteki Java). Jeśli zależności nie znajdują się w lokalnym repozytorium Maven pobiera je z centralnego repozytorium i umieszcza je w lokalnym repozytorium. Lokalne repozytorium jest to po prostu katalogu na dysku twardym komputera. Można również określić adres zdalnego repozytorium na potrzeby pobierania zależności. Cykl życia Jest to najważniejsza idea, na której opiera się Maven. Definiuje proces budowania i dystrybucji projektów. Istnieją trzy wbudowane cykle życia: o o default Odpowiada za zbudowanie (i wdrożenie) projektu. clean Czyści projekt, usuwa stare, niepotrzebne pliki.

o site Generuje stronę z dokumentacją projektu. Domyślny cykl życia w uproszczeniu zawiera fazy: 1. validate Sprawdzenie czy kod jest poprawny i czy projekt zawiera wszystkie niezbędne informacje np. odpowiednie zależności. Jeśli używamy jakiejś biblioteki, musimy ją zadeklarować w pliku pom.xml, w innym przypadku ta faza zakończy się błędem i proces budowania zostanie przerwany. 2. compile Podczas tej fazy kompilowany jest kod źródłowy projektu. 3. test Skompilowany kod jest poddawany testom jednostkowym wykorzystując dołączone biblioteki do testów. 4. package Tworzony jest wynikowy plik, jar/war (lub z wykorzystaniem odpowiednuch pluginow np. ear). 5. integration-test Spakowany kod poddawany jest testom integracyjnym. Jeśli testy tego wymagają to paczka wdrażana jest na specjalne środowisko, umożliwiające uruchomienie testów. 6. verify Sprawdzana jest poprawność utworzonego artefaktu. 7. install Artefakt jest instalowany w lokalnym repozytorium. Dzięki temu można go wykorzystać go jako zależność w innym projekcie. 8. deploy Wdrożenie (rozmieszczenie) artefaktu, przykładowo na serwer aplikacji, czy do zdalnego repozytorium. Profile Maven-a (Build Profiles) Profile umożliwiają tworzenie projektu w różnych konfiguracjach. Zamiast tworzenia dwóch osobnych plików POM, można po prostu określić profil z konfiguracji i inaczej kompilować, budowa i rozmieszczać ten sam projekt w różnych profilach (np. rozmieszczanie na serwer produkcyjny i na serwer testowy UAT) Każdy profil kompilacji jest opisany w pom-ie w tagu <profile>. <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.app</groupid> <artifactid>my-app</artifactid> <version>1.0.0</version> <profiles> <profile>

<id>test</id> <activation>...</activation> <build>...</build> <modules>...</modules> <repositories>...</repositories> <pluginrepositories>...</pluginrepositories> <dependencies>...</dependencies> <reporting>...</reporting> <dependencymanagement>...</dependencymanagement> <distributionmanagement>...</distributionmanagement> </profile> </profiles> </project> Profil opisuje, jakie zmiany powinny być wprowadzone w pliku POM podczas wykonywania w ramach tego profilu. To może być np. zmiana pliku konfiguracji aplikacji albo adresu serwera. Znaczniki w <profile> spowodują zastąpienie wartości znaczników o tej samej nazwie zdefiniowanych domyślnie w POM. W znaczniku <profile> często występuje znacznik <activation>. Ten znacznik opisuje warunek wyzwalający dla budowy tego profilu (np. inna budowa dla innych wersji Javy). Profil może być bezpośrednio wskazany w pliku settings.xml. lub poprzez parametr - P w wierszu polecenia MVN. W Eclipse w Eclipse w run as maven

Plugin-y (wtyczki) Maven można również traktować jako środowisko pluginów w którym każde zadania jest faktycznie wykonane przez wtyczki. Wtyczki Maven są zazwyczaj używane do Tworzenia pliku jar Tworzenia pliku war Tworzenia pliku ear Kompilacji kodu Testów jednostkowych Tworzenia dokumentacji Tworzenia raportów Wtyczka zawiera zazwyczaj szereg celów, które mogą być wykonywane przy użyciu następującej składni: mvn [plugin-name]:[goal-name] Na przykład projekt Java może zostać skompilowany z wtyczką kompilatora, uruchamiając następujące polecenie.mvn compiler:compile Maven provided the following two types of Plugins Wtyczki kompilacji (budowy) Wywoływane podczas budowania projektów, połączone ze znacznikiem <build/> w pom.xml. Wtyczki raportów Wywoływane podczas tworzenia dokumentacji projektów (faza site), połączone ze znacznikiem <reporting/> w pom.xml. Najpopularniejsze wtyczki clean 1 2 Czyści katalog docelowy po kompilacji. Usuwa katalog docelowy. compiler

3 4 5 6 7 Kompiluje kod źródłowy javy surefire uruchamia testy JUNIT, generuje raporty jar Tworzy plik jar dla bieżącego projektu war Tworzy plik war dla bieżącego projektu javadoc Generuje Javadoc dla bieżacego projektu (na podstawie komentarzy w kodzie źródłowym) antrun Uruchamia kod ANT w dowolnej fazie budowy W przykladzie maven-antrun-plugin wyświetla dodatkowy komunikat <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.companyname.projectgroup</groupid> <artifactid>project</artifactid> <version>1.0</version> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-antrun-plugin</artifactid> <version>1.1</version> <executions> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>jestem w fazie czyszczenia</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> C:\MVN\project>mvn clean

Efekt: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [post-clean] [INFO] ------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] [INFO] [antrun:run {execution: id.clean}] [INFO] Executing tasks [echo] jestem w fazie czyszczenia [INFO] Executed tasks [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Sat Jul 07 13:38:59 IST 2012 [INFO] Final Memory: 4M/44M [INFO] ------------------------------------------------------------------ Filtry zamiast ustawień Deklaracja <groupid>org.codehaus.mojo</groupid> <artifactid>properties-maven-plugin</artifactid> <executions> <execution> <configuration> <files> <file>../src/main/filters/filter-${env}.properties</file> </files> </configuration> </execution> </executions> Definicja w pliku properties

jdk.debug =false client.version=1.0.98 jdk.optimize=false jdk.source =1.8 jdk.target =1.8 app.debug =false app.unpack.modules=true remote-external-user= Odwołanie: <modules> <webmodule> <groupid>${project.groupid}</groupid> <artifactid>seam-netclinic-war</artifactid> <contextroot>/${app.web.context}</contextroot> <unpack>${app.unpack.modules}</unpack> </webmodule> Hierarchia Pom-ów <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> <parent> <groupid>org.codehaus.mojo</groupid> <artifactid>my-parent</artifactid>

<version>2.0</version> <relativepath>../my-parent</relativepath> </parent> <artifactid>my-project</artifactid>... </project> POM niższy w hierarchii może zmieniać ustawienia z POM-u nadrzędnego. Wystarczy tylko jeszcze raz zdefiniować ustawienie. Efektywny POM Mechanizm dziedziczenia POM powoduje może być trudno się dowiedzieć, jak całkowity (efektywny) plik POM wygląda, gdy wykonuje do Maven. Efektywny plik POM (wynik wszystkich dziedziczeń) nazywa się skutecznym POM lub efektywnym POM. Maven może pokazać skuteczny POM, za pomocą polecenia mvn help:effective-pom W Eclipse przedostatnia zakładka w widoku edytora to efektywny POM Archetypy (szablony) nie mylić z artefaktami (modułami) 1 2 maven-archetype-archetype Archetyp prosty (sample) maven-archetype-j2ee-simple Archetyp uproszczonej aplikacji J2EE

3 maven-archetype-mojo 4 maven-archetype-plugin 5 maven-archetype-plugin-site 6 7 maven-archetype-portlet Archetyp uproszczonej aplikacji JSR-268 Portlet. maven-archetype-quickstart 8 maven-archetype-simple 9 10 11 maven-archetype-site Archetyp do budowy dokumentacji maven-archetype-site-simple Archetyp do budowy dokumentacji uproszczony maven-archetype-webapp Archetyp uproszczonej aplikacji Web Eclipse nie widzi artefaktów

<?xml version="1.0" encoding="utf-8" standalone="no"?> <settings xmlns="http://maven.apache.org/settings/1.1.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/settings/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> <profiles> <profile> <id>java-net-public</id> <repositories> <repository> <id>java-net-public</id> <name>java Net Public</name> <url>https://maven.java.net/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled>

<updatepolicy>never</updatepolicy> </releases> <snapshots> <enabled>false</enabled> <updatepolicy>never</updatepolicy> </snapshots> </repository> </repositories> <pluginrepositories> <pluginrepository> <id>java-net-public</id> <name>java Net Public</name> <url>https://maven.java.net/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatepolicy>never</updatepolicy> </releases> <snapshots> <enabled>false</enabled> <updatepolicy>never</updatepolicy> </snapshots> </pluginrepository> </pluginrepositories> </profile> <profile> <id>securecentral</id> <!--Override the repository (and pluginrepository) "central" from the Maven Super POM --> <repositories> <repository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </repository>

</repositories> <pluginrepositories> <pluginrepository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </pluginrepository> </pluginrepositories> </profile>. </profiles> <activeprofiles> <activeprofile>java-net-public</activeprofile> <activeprofile>securecentral</activeprofile> </activeprofiles> </settings> Wyszukiwanie ręczne

Zasoby zewnętrzne (niezalecane) Zależność zewnętrzna w Maven jest to biblioteka (w pliku JAR), która nie znajduje się w repozytorium Mavena (lokalnym, centralnym lub zdalnym repozytorium). Może znajdować się gdzieś na lokalnym dysku twardym, na przykład w katalogu lib webapp, lub gdzieś indziej. Słowo "zewnętrzny" oznacza zatem zewnętrznych do systemu repozytorium Maven - nie tylko zewnętrzne do projektu. Większość zależności są zewnętrzne do projektu, ale niewielu jest zewnętrznych do systemu repozytorium (nie znajduje się w repozytorium). Można skonfigurować zależności zewnętrznych w sposób zbliżony do poniższego: <dependency> <groupid>mydependency</groupid> <artifactid>mydependency</artifactid> <scope>system</scope> <version>1.0</version> <systempath>${basedir}\war\web-inf\lib\mydependency.jar</systempath> </dependency>