Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Hasonló dokumentumok
Hello Maven. JSE vs. JEE, JEE vs Spring. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Hello Gradle. JEE, Git, Gradle, TestNG, Eclipse, IntelliJ IDEA. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 1

Eclipse IDE. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 2. Bedők Dávid v0.6

libgdx alapok, első alkalmazás

Mobil Informatikai Rendszerek

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Fási PHP függőségkezelés composerrel

Java I. A Java programozási nyelv

Széchenyi István Egyetem

Mobil Informatikai Rendszerek

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

JAVA webes alkalmazások

Java I. A Java programozási nyelv

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Viczián István IP Systems JUM XIX szeptember 18.

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

4. Gyakorlat: Csoportházirend beállítások

Közösség, projektek, IDE

Java és web programozás

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

Javac és Eclipse útmutató

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Indítsuk el az imént kicsomagolt Eclipse programot és kattintsunk a Help/Install new software menüre. A work with opcióhoz írjuk be a

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Hello World. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 1. Bedők Dávid v0.3

MPLAB leírás V1.1. Projektek kezelése. MPLAB leírás - dr. Kónya László 1

Az Oracle Fusion szakértői szemmel

Hová tűnt a sok kereszthivatkozás?

EBS fogyókúra György Zoltán Innovent Tanácsadó Kft október 9.

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Alap számológép alkalmazás

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Programozási technológia I.

Gyakorlat és házi feladat tájékoztató

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Kivételkezelés, naplózás. Exception handling, logging

JEE tutorial. Zsíros Levente, 2012

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

2017/01/27 08:59 1/6 Gettext Rendszer

Summer of LabVIEW The Sunny Side of System Design

ANDROID ALKALMAZÁSFEJLESZTÉS

8. rész: Implementáció JDeveloperben

Szoftvertechnológia alapjai Java előadások

Visual Basic 2005 Express Edition A VISUAL STUDIO HASZNÁLATA NEM LEKTORÁLT VÁLTOZAT

Collections. Összetett adatstruktúrák

4. gyakorlat: Teszttervezés és integráció

A Java EE 5 plattform

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Újdonságok és érdekességek CONSEDU BT.

Flex: csak rugalmasan!

Madarassy László, mérnök, BME - Mobil Innovációs Központ. lmadarassy@mik.bme.hu

Automatizált Java Build. ApacheAnt használatával

Java Programozó képzés A&K AKADÉMIA 2019.

BookStore #maven. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

C++ fejlesztés az ECLIPSE környezetben

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Google Web Toolkit. Elek Márton. Drótposta kft.

Oracle E-Business Suite auditok tapasztalatai. Gáspár Gyula Senior Manager Oracle License Management Services, Central Europe április 6.

Kiszolgálók üzemeltetése. Iványi Péter

RIA Rich Internet Application

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Bevezető. Servlet alapgondolatok

Java Parancssor Maven-nel

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Automatikus teszt futtatás, folytonos integráció

BookStore #gradle. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

Eduroam változások - fejlesztések, fejlődések. Mohácsi János NIIF Intézet HBONE Workshop 2015

Programozási nyelvek JAVA EA+GY 1. gyakolat

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

SOPHOS simple + secure. A dobozba rejtett biztonság UTM 9. Kókai Gábor - Sophos Advanced Engineer Balogh Viktor - Sophos Architect SOPHOS

Digitális elektronika gyakorlat. A VHDL leírástípusok

OOP: Java 1.Gy: Java alapok

BookStore #maven. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

Adatbányászat és Perszonalizáció architektúra

Java programozási nyelv 6. rész Java a gyakorlatban

C#, OOP. Osztályok tervezése C#-ban

CI gyakorlat segédlet

Programozási nyelv Java

Excel vagy Given-When-Then? Vagy mindkettő?

Utolsó módosítás:

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

JavaScript Web AppBuilder használata

Oracle BI Administration Tool. Repository felépítése

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Automatikus teszt futtatás, build keretrendszerek

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Robot Operating System

Adatbázis-kezelés ODBC driverrel

Átírás:

Hello Gradle TestNG, Eclipse, IntelliJ IDEA Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2 Bedők Dávid 2017.09.17. v0.2 Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 1 / 27

Java project struktúra Avagy hogyan szervezzük forrásainkat? Java Build eszközök: javac batch files / bash scripts IDE (Eclipse, IntellJ IDEA,...) Apache ANT (+ Apache IVY) build tool Apache Maven Miket érdemes figyelembe venni? Gradle Lesznek egység tesztjeink? külön source folder a teszteknek (test és main) Lesznek erőforrásaink? külön source folder az erőforrásoknak (resources) Lesznek nem java forrásaink is? külön source folder a forrásoknak (java, scala, groovy, stb.) Java filozófia átláthatóság, egyértelműség classpath (cp) használata SAR*: JBoss specifikus APK**: android specifikus JAR, WAR, EAR, SAR*, APK** csomagolások alkalmazása Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 2 / 27

Java project struktúra javac Csak a "fantázia" szab határt a konfigurációnak (nincsenek szabályok)! javac programnak megadjuk az összes olyan könyvtárat, ahol forrásállományok találhatóak. Könyvtár struktúra bin/ src1/ source folder src2/ source folder Az Application osztály használja az ImperialToMetricCalculator osztály egy példányát. Mindkettő azonos csomagba fordul, ezért az alkalmazás nem importálja a kalkulátort, futás időben egy helyen lesznek. \hellotest 1 > javac -d./ bin./ src1 /hu/ qwaevisz / demo / Application. java./ src2 / hu/ qwaevisz / demo / ImperialToMetricCalculator. java 2 > java - cp./ bin hu. qwaevisz. demo. Application Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 3 / 27

Java project struktúra Eclipse IDE Eclipse "Java project" alapértelmezett konfigurációja: Könyvtár struktúra bin/ src/ source folder Eclipse "Java project" egység tesztekkel konfigurációja: Könyvtár struktúra bin/ src/ main/ source folder test/ source folder A legtöbb IDE-ben ezek teljeskörűen konfigurálható elemek (Eclipse: Project properties Java Build Path Source tab)! Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 4 / 27

Java project struktúra Gradle Gradle java plugin alapértelmezett konfigurációja: Könyvtár struktúra bin/ src/ main/ java/ source folder resources/ source folder test/ java/ source folder resources/ source folder Ezektől Gradle-ben is teljes körűen el lehet térni, de nem érdemes. Ha élünk ezzel, akkor minimális konfigurációval el tudjuk kezdeni a munkát! Megjegyzés : A resources könyvtárak bár tipikusan nem tartalmaznak lefordítandó forrást, ugyanúgy rajta vannak a classpath-on, hogy runtime a tartalmuk feldolgozható legyen. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 5 / 27

JAR - Java ARchive ZIP formátum, mely (Java) byte code-okat (*.class), konfigurációs állományokat (pl. *.properties, *.xml, stb.) illetve egy speciális metaadatokat (kulcs-érték párokat) tartalmazó MANIFEST.MF állományt tartalmaz. Könyvtár struktúra META INF/ MANIFEST.MF hu/ qwaevisz/ demo/ HelloWorld.class Lorem.class log4j.xml Struktúrája előre definiált, opcionálisan forrásállományokat (pl. *.java, *.groovy, stb.) is magával hordoz (azonos helyen a byte code-dal). 1 Manifest - Version : 1.0 2 Created - By: 1.7.0 _67 ( Oracle Corporation ) MANIFEST.MF Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 6 / 27

Executable JAR file A Main-Class kulcsnak szerepelnie kell a MANIFEST.MF állományban, és a belépési pontként szolgáló osztály full qualified neve lesz az értéke. 1 Manifest - Version : 1.0 2 Created - By: 1.7.0 _67 ( Oracle Corporation ) 3 Main - Class : hu. qwaevisz. demo. Application MANIFEST.MF 1 > cd bin 2 > jar cvfe calculator. jar hu. qwaevisz. demo. Application hu/ qwaevisz / demo / Application. class hu/ qwaevisz / demo / ImperialToMetricCalculator. class 3 > cd.. 4 > java - jar bin / calculator. jar create new archive verbose specify archive file name (2) sepcify entry point (main class) (3) Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 7 / 27

Eclipse OXYGEN IDE, 2017 június Eclipse IDE for Java EE Developers Letöltés: https://www.eclipse.org/downloads/ Verzió: 4.7.0 Telepítés: unzip vagy installer Integrált kiegészítők (plugins): Gradle Maven Git EclEmma Java Code Coverage... Továbbiak telepítése (Help / Eclipse Marketplace): TestNG (filter: testng) http://beust.com/eclipse Magyar billentyűzet kiosztás esetén a "{" (Ctrl + B) használata: Preferences General Keys Skip all brakepoints (Ctrl + Alt + B) Unbind Eclipse IDE alapvető kezelése: http://users.nik.uni obuda.hu/bedok.david/jse.html Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 8 / 27

Eclipse beállítása Code Style Formatter Window Preferences (type: formatter) Java Code Style Formatter New... / Import...: uni-obuda-java-formatter Initialize: Eclipse [build-in] Indentation Indent Statement within switch body Line Wrapping General Maximum line width: 160 Line Wrapping Enum declaration Policy: Wrap all elements, every element on a new line Constants policy: Wrap all elements, every element on a new line + Force split Comments Line width Maximum: 120 \eclipse\uni obuda java formatter.xml Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 9 / 27

Eclipse beállítása Save Actions Window Preferences (type: save actions) Java Editor Save Actions Perform the selected actions on save Format source code (all lines) Organize imports Additional actions - Configure Code Organaizing: Remove trailing whitespaces Code Style: Use blocks in if/while/for/do statements Member Accesses: Use this qualifier for field accesses: Always Member Accesses: Use this qualifier for method accesses: Always Unnecessary Code: Remove unused imports Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 10 / 27

IntelliJ IDEA IDE Letöltés: https://www.jetbrains.com/idea/ Kereskedelmi termék Community verzió pl. JavaEE-t nem támogat, de ezen IDE támogatás nélkül is tökéletesen alkalmas professzionális munkára (akár JavaEE projektek kezelésére is) Néhol gyorsabb mint Eclipse Más billentyűkiosztás, átszokni nem könnyű, de van lehetőség más IDE kiosztásának használatára Beépített Maven/Gradle/Git plugin Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 11 / 27

Hello World src main java hu qwaevisz hello Application.java 1 package hu. qwaevisz. hello ; 2 3 public class Application { 4 5 public static void main ( final String [] args ) { 6 System. out. println (" Hello World "); 7 } 8 9 public int add ( final int a, final int b) { 10 return a + b; 11 } 12 13 } Application.java [gradle maven]\helloworld Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 12 / 27

TestNG 3 rd party library http://testng.org/ GitHub: https://github.com/cbeust/testng Verzió: 6.11 Artifactory URL: org.testng:testng:6.11 group/groupid: org.testng name/artifactid: testng version: 6.11 Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 13 / 27

Egység teszt TestNG-vel src test java hu qwaevisz hello ApplicationTest.java 1 package hu. qwaevisz. hello ; 2 3 import org. testng. Assert ; 4 import org. testng. annotations. Test ; 5 6 public class ApplicationTest { 7 8 @Test 9 public void addnumbers () { 10 Application app = new Application (); 11 Assert. assertequals ( app. add (2, 3), 5); 12 } 13 14 } ApplicationTest.java Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 14 / 27

Gradle Build tool https://gradle.org/ Letöltés: https://gradle.org/releases/ Verzió: 4.1 Java, C++, Python és megannyi további programozási nyelv támogatása monorepo és multi-repo támogatás multi-language, multi-platform, multi-project és multi-channel software fejlesztés (SaaS: Software as a Service) Telepítés: unzip Környezeti változók: GRADLE_HOME c:\apps\gradle 2.6 Path módosítása %Path%;%GRADLE_HOME%\bin Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 15 / 27

Gradle főbb tulajdonságok Apache Ant alapú build rendszer http://ant.apache.org/ Apache Ivy stílusában készült dependency management http://ant.apache.org/ivy/ intelligens alapértelmezett környezetek Apache Maven alapján https://maven.apache.org/ a Git sebességével és hash algoritmusával metaprogramozás Apache Groovy / JetBrains Kotlin alapokon http://groovy lang.org/ https://kotlinlang.org/ Directed Acyclic Graph (DAG) Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 16 / 27

Gradle 1 > gradle -- version 2 3 ------------------------------------------------------------ 4 Gradle 4.1 5 ------------------------------------------------------------ 6 7 Build time : 2017-08 -07 14:38:48 UTC 8 Revision : 941559 e020f6c357ebb08d5c67acdb858a3defc2 9 10 Groovy : 2.4.11 11 Ant : Apache Ant ( TM) version 1.9.6 compiled on June 29 2015 12 JVM : 1.8.0 _101 ( Oracle Corporation 25.101 - b13 ) 13 OS: Mac OS X 10.12.6 x86_64 Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 17 / 27

Gradle - Eclipse integráció Gradle eclipse plugin-ja legyártja az összes szükséges konfigurációs állományt ahhoz, hogy eclipse project lehessen (semmi extra nem kell egy eclipse projekhez, néhány IDE specifikus XML állomány). Eclipse Gradle plugin-ja felismeri a gradle konfigurációs állományait, és annak megfelelően képes kezelni a projektet ezt követően. A kettő együttes alkalmazása régebben gyakoribb volt, ma már a Gradle hivatalos Eclipse pluginje kényelmes, kompromisszummentes és professzionális megoldást ad. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 18 / 27

Hello Gradle! Hello World alkalmazás kezelése Gradle segítségével [gradle maven]\helloworld 1 apply plugin : java 1 > gradle clean build 2 3 > Configure project : 4 Task name : info 5 Project name : helloworld 6 7 8 BUILD SUCCESSFUL in 1s 9 5 actionable tasks : 5 executed build.gradle output: build\libs\helloworld.jar (non-executable) clean, build java plugin task-jai build függő taskjai: compilejava, jar, assemble, test, check,... Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 19 / 27

Gradle task készítése 1 apply plugin : java 2 3 sourcecompatibility = 1.7 4 version = 1.0 5 6 task info () { 7 println " Task name : " + name 8 println " Project name : " + project. name 9 println " Project version : " + version 10 } build.gradle 1 > gradle info 2 3 > Configure project : 4 Task name : info 5 Project name : helloworld 6 Project version : 1.0 7 8 9 BUILD SUCCESSFUL in 0s Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 20 / 27

Executable JAR Gradle jar task módosítása 1 [..] 2 jar { 3 manifest { 4 attributes Implementation - Title : Gradle Demo Application, 5 Implementation - Version : version, 6 Main - Class : hu. qwaevisz. gradle. Application 7 } 8 } 9 10 task run ( type : Exec ) { 11 workingdir build / libs 12 commandline java, -jar, "${ project. name }-${ version }. jar " 13 } build.gradle 1 > gradle clean build run 2 3 [..] 4 5 > Task : run 6 Hello World 7 8 BUILD SUCCESSFUL in 2s 9 6 actionable tasks : 6 executed Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 21 / 27

Gradle TestNG integráció 1 [..] 2 def testngversion = 6.9.10 3 4 repositories { mavencentral () } 5 6 dependencies { 7 testcompile group : org. testng, name : testng, version : testngversion 8 } 9 10 test { Alapértelmezett test keretrendszer: junit. 11 usetestng () 12 } build.gradle 1 > gradle test 2 [..] 3 > Task : test 4 5 Gradle suite > Gradle test > hu. qwaevisz. hello. ApplicationTest. addnumbers FAILED 6 java.lang. AssertionError at ApplicationTest.java :11 7 8 1 test completed, 1 failed 9 [..] 10 BUILD FAILED in 1s 11 3 actionable tasks : 3 executed Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 22 / 27

Gradle Java plugin Tasks https://docs.gradle.org/current/userguide/java_plugin.html Task: compilejava, compiletestjava, jar, javadoc, test, clean,... Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 23 / 27

Gradle Java plugin Dependency Configurations compile Fordítási és futási időben szükséges függőség. compileonly Fordítási időben szükséges függőség. runtime Futási időben szükséges függőség. testcompile Kiegészítő függőség test task fordításakor és futásakor. testruntime Kiegészítő futási idejű függőség test task futásakor. archives A projekt által létrejött artifact (pl. jar)...... Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 24 / 27

Gradle Eclipse integráció 1 [..] 2 apply plugin : eclipse 3 [..] build.gradle 1 > gradle eclipse További taskok: eclipseclasspath, eclipsejdt, eclipseproject Könyvtár struktúra settings/ org.eclipse.jdt.core.prefs.classpath.project Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 25 / 27

Eclipse Gradle project File Import... Gradle Existing Gradle Project Project root directory: \helloworld Import options: Gradle wrapper Mit honnan? Az Eclipse Gradle plugin (buildship) elsősorban a Gradle projekt struktúra kezelése, a projektek importálása miatt fontos. Eclipse-ből futtatni Gradle task-okat már ízlés dolga (van aki minden ilyesmit Eclipse-ből szeret futtatni, van aki ezt külön terminal/command window-ban teszi meg). Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 26 / 27

Gradle IntelliJ integráció 1 [..] 2 apply plugin : idea 3 [..] build.gradle 1 > gradle idea További taskok: cleanidea, ideamodule, ideaproject, ideaworkspace Könyvtár struktúra helloworld.iml helloworld.ipr helloworld.iws Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.17. v0.2 27 / 27