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

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

Hello Java Enterprise Edition

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 Java Enterprise Edition

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

JAVA webes alkalmazások

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

A Java EE 5 plattform

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

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Junior Java Képzés. Tematika

Java Business Integration szolgáltatásalapú architektúra JavaEE környezetben. Simon Géza Zsemlye Tamás

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Osztott alkalmazások fejlesztési technológiái Áttekintés

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

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

Java I. A Java programozási nyelv

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

8. rész: Implementáció JDeveloperben

Osztott rendszerek, Java EE. Általános bevezető

ANDROID ALKALMAZÁS FEJLESZTÉS

Java I. A Java programozási nyelv

libgdx alapok, első alkalmazás

Informatikai Tesztek Katalógus

A Web réteg architektúrája A JSF web alkalmazás keretrendszer. Bakay Árpád dr. NETvisor kft (30)

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

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

Hová tűnt a sok kereszthivatkozás?

JEE tutorial. Zsíros Levente, 2012

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

Mobil Informatikai Rendszerek

SQLServer. SQLServer konfigurációk

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

Széchenyi István Egyetem

A TANTÁRGY ADATLAPJA

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

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

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

SAS Enterprise BI Server

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

webalkalmazások fejlesztése elosztott alapon

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.

A SZOFTVERTECHNOLÓGIA ALAPJAI

IBM Business Process Manager változat 8 alváltozat 5. Az IBM Business Process Manager áttekintése

RIA Rich Internet Application

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

Rational. Application Developer. Telepítési kézikönyv. 7.0 változat GI

Adatbázis-kezelés ODBC driverrel

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

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Alkalmazás boltok. Android Market, Apple AppStore, WP7 MarketPlace Cserna Bence, Paksy Patrik

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

Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Enterprise Service Bus (ESB) Ercsényi András, BME IIT, 2011.

A fordítónak mindenhez lehet

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

RapidMiner telepítés i. RapidMiner telepítés

Fejlesztés és üzemeltetés WebLogic platformon

S04-2 Elosztott alkalmazások készítése

Flex: csak rugalmasan!

MMK-Informatikai projekt ellenőr képzés 4

OTRS bevezetése és tapasztalatok a DF-ISZK-n

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

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

Webszolgáltatások kommunikációs overhead-jének becslése

Microsoft SQL Server telepítése

IBM Tivoli Access Manager for WebLogic Server Felhasználóikézikönyv. 3.9-es verzió GC

(Teszt)automatizálás. Bevezető

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

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

SZAKKÉPZÉSI KERETTANTERV a(z) MOBILALKALMAZÁS FEJLESZTŐ SZAKKÉPESÍTÉS-RÁÉPÜLÉSHEZ

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

Közösség, projektek, IDE

Programozási technológia 2.

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

5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

Kinek szól a könyv? Hogyan épül fel a könyv? Megjelenés előtti szoftver A hálózati kézikönyv tartalma A könyv támogatása Kérdések és megjegyzések

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

Új komponens a Talend Palettán: Starschema SAP Connector. Csillag Péter, Földi Tamás Starschema Kft.

MVC. Model View Controller

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

A TANTÁRGY ADATLAPJA

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

C++ fejlesztés az ECLIPSE környezetben

*#Discount~ Kaspersky Internet Security - multidevice 2015 best software to buy for mac ]

A FEJLESZTÉS KIHÍVÁSAI

Bevezetés E LSŐ FEJEZET

Feltörekvő technológiák: seam, drools, richfaces és társai a JBossban

Source control systems. Horváth Ernő, Dr. Pozna Claudiu Radu

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Summer of LabVIEW The Sunny Side of System Design

Hello, EJB! Egy egyszerű példa

JNDI - alapok. Java Naming and Directory Interface

Netis vezeték nélküli, N típusú, router

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

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Adatbázis rendszerek 7. előadás State of the art

Átírás:

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

Információ Hivatalos tárgyi weboldal: http://users.nik.uni-obuda.hu/bedok.david/jee.html Prezentációk (vmajor.minor + yyyy.mm.dd.) Programok, eszközök, library-k E-mail: bedok.david@nik.uni-obuda.hu Forráskódok: https://github.com/davidbedok/oejee Előkövetelmény: Java SE alapos ismeret ANSI SQL és adatbáziskezelés alapfokú ismerete XML, XHTML ismeret Java Servlet és JSP alapfokú ismeret Open-source szemlélel Java ecosystemre való nyitottság GIT verziókezelő használata (?) 2

Követelmény Laborfoglalkozások: 2 fős pármunkában (XP), előadások és konzultáció Önálló projekt munka elkészítése a tanult technológiák felhasználásával 3. hét: Terv leadása PDF formátumban (max. 2 oldal) 3. hét-13. hét: Projekt folyamatos fejlesztése (git history) 13. hét: Projekt fejlesztésének befejezése 13-14. hét: Projekt bemutatása (10-15 perces élő demo, max. 5 perc prezentáció) 14. hét: Projekt fejlesztési dokumentáció leadása (15-20 oldal PDF formátumban) Pótleadás: Ha sokminden hiányzik, akkor esélytelen, egyéb esetben egyedi elbírálás alapján. Dokumentáció pótleadás lehetséges vizsgaidőszakban gyakorlati jegy póton Elméleti teszt zárthelyi bejelentés nélkül elképzelhető átlag muszáj >= 2 Zárthelyik javítása lehetséges a 14. héten (átlagot lehet javítani) Zárthelyik teljes pótlása lehetséges gyakorlati jegy póton 3

Féléves feladat Téma követelmények Egy valóságban is létező problématérre épülő alkalmazás készítése, melyben definiálható a téma körül értelmezett adat- és a rajtuk végzett művelethalmaz. Az alkalmazásnak több interface -e kell hogy legyen: 1. Webes interface (3-5 JSP/JS dinamikus weboldal) 2. REST API (CRUD műveletek, akciók végrehajtása) 3. Queue/Topic interface pl. batch adatfeltöltésre, aszinkron művletvégzésre 4. Management felület (JMX) 5. SOAP WebService 6. Remote EJB (RMI) <3 db interface: sikertelen projekt 3 db interface: maximum 3-es érdemjegy 4 db interface: maximum 4-es érdemjegy >4 db interface: akár 5-ös érdemjegy Az interface-ekhez ha szükséges, kliens programokat is kell készíteni (Java/C#/stb.), vagy konfigurációt kell adni (pl. SOAP UI). 4

Félvés feladat Adatbázis követelmények A választott téma kapcsán egy olyan ~ANSI SQL db schema kialakítása, mely az alábbi komplexitásokat tartalmazza: Legalább 6 adatbázis tábla, kb. 25 mező Min. 1 db 1-N kapcsolat egy tábla és egy törzstábla között (a törzstáblából enum lesz entitás helyett) Min. 1 db 1-N kapcsolat két tábla között Min. 1 db N-M kapcsolat kapcsolótáblával Egyéni komplexitás (pl. partnerlekérdezéses tábla, topológia, stb.) Legalább 2 db unique index és legalább 2 normal index Léterhozó és takarító postgresql scriptek (minta alapján) Saját schema, user, role (minta alapján) Az adatbázis schemára számos kész és működő minta script halmaz található a tárgy git repository-jában, így a fenti követelmény kizárólag a kreativitást írja elő, a szakmai munka része gyakorlatilag készen van (interpretálni kell csak). 5

Project Git Repository A féléves feladatokkal folyamatos fejlesztés mellett az alábbi git repository-ban kell dolgozni: https://github.com/davidbedok/oejee2016autumn Ha még nincs GitHub account, létre kell egyet hozni A GitHub account és a diák egyértelmű összekötése a project.json állományban lesz (repository gyökerében). Ennek karbantartása a hallgatók feladata! Válasszon mindenki egy üzleti igényt/témát, illetve projekt nevet! project.json állományt kell kitölteni 6

Project állomány { } "period": "2016-2017/1", "projects": [ { "name": "sample", "description": "Sample project", "platform": "weblogic", "members": [ { "name": "Dávid Bedők", "neptun": "Q59R7A", "github": "davidbedok" } ], "interfaces": [ { "tpye": "restful", "goal": "handle crud operations" }, { "type": "jms", "goal": "bulk upload data" } ] ] } platform: [weblogic jms] interface type: [web rest jms jmx soap rmi] project.json A git repository-ban törekedjünk mindenhol az angol nyelv használatára. A project neve (name element) kisbetűs, angol, white space mentes egyértelmű és egyedi kifejezés legyen a repo-ra nézve. A project nevének megfelelő könyvtár létezzen a /projects könyvtárban alkönyvtárként. Ez legyen a saját projekt gradle root-ja. A members tömb elemei hozzák létre a kapcsolatot a hallgató nevével, neptun kódjával és githu felhasználója nevével. 7

Java Enterprise Edition - Történet 1998 - Java Professional Edition 1999 - J2EE 1.2 (Java 2 Platform, Java SE 1.2+) 2001 - J2EE 1.3 (Java SE 1.3+) 2003 - J2EE 1.4 (Java SE 1.4+) 2006 - JEE 5 (Java SE 5+) 2009 - JEE 6 (Java SE 6+) 2013 - JEE 7 (Java SE 7+) ~2017 - JEE 8 (Java SE 8+) JRE verziószáma 1.4 után: 5, 6, 7, 8,.. JDK verziószáma még sok helyen: 1.5.0, 1.6.0, 1.7.0,.. JRE 8.x és JDK 1.8.x már official, JEE 8 még készülőben 8

Java Enterprise Edition - Elemei Java Community Process s JSR (Java Specification Request) JDBC - Java Database Connectivity [JSR54, JSR114, JSR221] RMI-IIOP - Java Remote Method Invocation over Internet Inter-Orb Protocol JNDI - Java Naming and Directory Interface Specification Java Servlet [JSR154, JSR315, JSR340] JSP - JavaServer Pages [JSR152, JSR245] JSTL - JavaServer Pages Standard Tag Library [JSR52] EJB - Enterprise JavaBeans [JSR153, JSR220, JSR318, JSR345] JMS - Java Message Service [JSR914, JSR343] JTA - Java Transaction API [JSR907] JCA - J2EE Connector Architecture [JSR112, JSR322] JAAS - Java Authentication and Authorization Service JSF - JavaServer Faces [JSR127, JSR252, JSR314, JSR344] JMX - Java Management Extensions [JSR3, JSR160, JSR255, JSR262] JAX-WS - Java API for XML-Based Web Services [JSR224] JAX-RS - Java API for RESTful Web Services [JSR311, JSR339] JAXP - Java API for XML Processing [JSR206] JAXB - Java Architecture for XML Binding [JSR222] JPA - Java Persistence API [JSR220, JSR317, JSR338] SAAJ - SOAP with Attachments API for Java [JSR67] EL - Expression Language [JSR245, JSR341] CDI - Contexts and Dependency Injection [JSR299, JSR346] Interceptors [JSR318]... 9

JEE és Elemeinek verziói Content J2EE 1.2 J2EE 1.3 J2EE 1.4 JEE 5 JEE 6 JEE 7 JDBC 2.0 2.0 3.0 3.0 4.0 4.1 JNDI 1.2 1.2 1.2 1.2 1.2 1.2 RMI-IIOP 1.1 1.1 1.1 1.1 1.1 1.1 Java Servlet 2.2 2.3 2.4 2.5 3.0 3.1 JSP 1.1 1.2 2.0 2.1 2.2 2.3 EJB 1.1 2.0 2.1 3.0 3.1 3.2 JMS 1.0 1.0 1.1 1.1 1.1 2.0 JTA 1.0 1.0 1.0 1.1 1.1 1.2 JAXP - 1.1 1.2 1.3 1.3 1.3 JSTL - 1.0 1.1 1.2 1.2 1.2 JCA - 1.0 1.5 1.5 1.6 1.7 JAAS - 1.0 1.3 1.3 1.3 1.3 JSF - - 1.1 1.2 2.0 2.2 JMX - - 1.2 1.2 1.2 2.0 JAX-WS - - - 2.0 2.2 2.2 JAXB - - - 2.0 2.2 2.2 SAAJ - - - 1.3 1.3 1.3 JPA - - - 1.0 2.0 2.1 JAX-RS - - - - 1.1 2.0 EL - - - - 2.2 3.0 CDI - - - - 1.0 1.1 Interceptors - - - - 1.1 1.2 10

Java fejlesztői környezet Java Oracle Java JDK, Open JDK,... Verziókezelő Git, Mercury, SVN, Build tool Gradle, Maven, Ant, scripts,... Integrated Development Environment (IDE) + plugins Eclipse, IntelliJ IDEA, Netbeans (Enterprise) Application Server (EAS/AS) Apache Tomcat, JBoss, Glassfish, WebLogic,... Teszt eszközök, library-k Selenium, junit, TestNG, SoapUI, Adattárolás PostgreSQL, MySQL, Redis, Derby (JavaDB), Messaging Framework Active MQ, HornetQ, Riport Jasper Reports, Continuous Integration (CI) támogatása Codestyle, static checks,... 11

Java SE JDK http://www.oracle.com/technetwork/java/javas e/downloads/index.html Java SE 7u79 Java SE 8u102 (javasolt) System Environment Variable: JAVA_HOME, j:\java\jdk1.8.0_102 Path módosítása: %Path%;%JAVA_HOME%\bin >java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 12

Git Source Code Management Nyílt forráskódú elosztott verziókezelő Linus Torvalds >git --version Verzió: 2.10.0 https://git-scm.com/ Install (windows installer) git version 2.8.1.windows.1 Use Git from the Windows Command Prompt Use OpenSSH Checkout Windows-style, commit Unix-style line endings Use MinTTY Disable file system caching 13

GitHub Public repository-k számára ingyenes. Elsősorban open-source társaságok számára. Üzleti érdekszférába tartozó projektek esetén a public repository később kellemetlenséget okozhat! https://github.com/ Sign UP! https://github.com/davidbedok BitBucket (https://bitbucket.org/): Private repository-k számára is ingyenes 5 fejlesztőig 14

OEJEE Repository https://github.com/davidbedok/oejee.git >git clone https://github.com/davidbedok/oejee.git Cloning into 'oejee'... remote: Counting objects: 4, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (4/4), done. Checking connectivity... done. 15

Java project struktúra Avagy hogyan szervezzük forrásainkat? 1. javac 2. Eclipse 3. Gradle Miket érdemes figyelembe venni? Lesznek egység tesztjeink? külön Source folder a teszteknek (test vs main) tipikusan külön szint a könyvtárstruktúrában Lesznek erőforrásaink? külön könyvtárak használata (resources) Lesznek nem java forrásaink is? tipikusan külön szint a könyvtárstruktúrában (java, groovy, scala,...) Java filozófia Átláthatóság, egyértelműség Classpath (cp) használata JAR, WAR, EAR, SAR*, APK** csomagolások alkalmazása Java Build eszközök: 1. batch filok / bash scriptek (javac, stb.) 2. Apache ANT (+ Apache IVY) 3. Apache Maven 4. Gradle JAR Hell probléma, MANIFEST.MF file *: jboss specifikus (nem scope) **: android specifikus (nem scope) 16

Java projekt struktúra - javac Elvben teljesen önkéntes! javac programnak megadjuk az összes olyan könyvtárat, ahol forrásállományok találhatóak. GIT \hellotest bin/ src1/ src2/ Source folder Source folder >javac -d./bin./src1/hu/qwaevisz/demo/application.java./src2/hu/qwaevisz/demo/imperialtometriccalculator.java >java -cp./bin hu.qwaevisz.demo.application 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. 17

Java projekt struktúra - Eclipse Eclipse Java project default konfigurációja: bin/ src/ Source folder Eclipse Java project egység tesztekkel: bin/ src/ main/ src/ test/ Source folder Source folder A legtöbb IDE-ben ezek teljeskörűen konfigurálható elemek! 18

Java projekt struktúra - Gradle Gradle java plugin default konfigurációja: build/ src/ main/ java/ resources/ src/ test/ java/ resources/ Source folder Source folder Source folder Source folder Ezektől Gradle-ben is teljes körűen el lehet térni, de nem érdemes. Ha élünk ezzel, akkor minimál konfigurációval el tudjuk kezdeni a munkát! Megjegyzés: mind a source, mind a resources könyvtárak rajta vannak a classpath-on. 19

JAR - Java ARchive META-INF/ MANIFEST.MF hu/ qwaevisz/ demo/ HelloWorld.class Lorem.class log4j.xml 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 file-t tartalmaz. 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). Manifest-Version: 1.0 Created-By: 1.7.0_67 (Oracle Corporation) MANIFEST.MF 20

(Executable) JAR file Manifest-Version: 1.0 Created-By: 1.7.0_67 (Oracle Corporation) Main-Class: hu.qwaevisz.demo.application MANIFEST.MF A Main-Class kulcsnak szerepelnie kell a MANIFEST.MF file-ban, és a belépési pontként szolgáló osztály full qualified neve az értéke. >cd bin >jar cvfe calculator.jar hu.qwaevisz.demo.application hu/qwaevisz/demo/application.class hu/qwaevisz/demo/imperialtometriccalculator.class >cd.. >java -jar bin/calculator.jar create new archive verbose specify archive file name (2. arg.) sepcify entry point (main class) (3. arg) 21

Gradle https://gradle.org/ Verzió: 3.0 From command line to IDE to continuous integration, only one Enterprise build automation system to rule them all. Declare and execute all tasks necessary to compile, test, package and ship multi-language multi-platform multi-project and multi-channel software, SaaS and Mobile Apps. (SaaS: Software as a Service) Install (unzip) System Environment Variable: GRADLE_HOME, c:\apps\gradle-2.6 Path módosítása: %PATH%;%GRADLE_HOME%\bin 22

Gradle Groovy-based Ant dependency management style of Ivy the intelligent defaults of Maven the speed and hashing of Git the metaprogramming power of Groovy Directed Acyclic Graph (DAG) 23

Gradle > gradle --version ------------------------------------------------------------ Gradle 2.13 ------------------------------------------------------------ Build time: 2016-04-25 04:10:10 UTC Build number: none Revision: 3b427b1481e46232107303c90be7b05079b05b1c Groovy: 2.4.4 Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015 JVM: 1.8.0_92 (Oracle Corporation 25.92-b14) OS: Windows 7 6.1 amd64 24

Gradle - Eclipse integráció Gradle eclipse plugin-ja legyártja az összes szükséges config állományt ahhoz, hogy eclipse project lehessen (semmi extra nincs ebben). Eclipse Gradle pluginja felismeri a gradle konfigurációs állományait, és annak megfelelően képes kezelni a projektet. A kettő együttes alkalmazása (legtöbbször) kényelmes, kompromisszummentes és professzionális megoldást ad. 25

Hello Gradle! Standalone Hello World with Gradle GIT \oejee\helloworld apply plugin: 'java' [root] helloworld build.gradle >gradle clean build clean, build java plugin task-jai build/libs/helloworld.jar non-executable! build függőségei (taskok): compilejava,.., jar, assemble, test, check 26

Saját Gradle task apply plugin: 'java' [root] helloworld sourcecompatibility = 1.7 version = '1.0' task info() { println "Task name: " + name println "Project name: " + project.name println "Project version: " + version } build.gradle >gradle info Task name: info Project name: helloworld Project version: 1.0 :info UP-TO-DATE BUILD SUCCESSFUL Total time: 4.34 secs 27

Executable JAR (jar task módosítása) [..] [root] helloworld jar { manifest { attributes 'Implementation-Title': 'Gradle Demo Application', 'Implementation-Version': version, 'Main-Class': ' hu.qwaevisz.gradle.application' } } task run( type: Exec ) { workingdir 'build/libs' commandline 'java', '-jar', "${project.name}-${version}.jar" } build.gradle >gradle clean build run 28

TestNG http://testng.org/ GitHub: https://github.com/cbeust/testng Verzió: 6.9.10 Artifactory URL: 'org.testng:testng:6.9.10' group: 'org.testng', name: 'testng', version: '6.9.10' 29

Egység teszt készítése TestNG-vel src\test\java\hu\qwaevisz\gradle\applicationtest.java package hu.qwaevisz.gradle; ApplicationTest.java import org.testng.assert; import org.testng.annotations.test; public class ApplicationTest { } @Test public void addnumbers() { Application app = new Application(); Assert.assertEquals(app.add(2, 3), 5); } 30

Gradle és TestNG integráció [..] def testngversion = '6.9.10' [root] helloworld repositories { mavencentral() } dependencies { } test { } testcompile group: 'org.testng', name: 'testng', version: testngversion usetestng() testcompile test task (java plugin) konfigurációja (dependency configurations) default test framework: junit build.gradle >gradle test 31

Gradle Tasks Java plugin https://docs.gradle.org/current/userguide/ja va_plugin.html#tab:configurations compilejava, compiletestjava, jar, javadoc, test, clean, assemble, check, build,... 32

Gradle Dependency Configurations Java plugin compile The dependencies required to compile the production source of the project. runtime The dependencies required by the production classes at runtime. By default, also includes the compile time dependencies. testcompile The dependencies required to compile the test source of the project. By default, also includes the compiled production classes and the compile time dependencies. testruntime The dependencies required to run the tests. By default, also includes the compile, runtime and test compile dependencies. 33

Gradle és Eclipse integráció [..] apply plugin: 'eclipse' [..] [root] helloworld build.gradle >gradle eclipse eclipseclasspath, eclipsejdt, eclipseproject tasks settings/ org.eclipse.jdt.core.prefs.classpath.project új állományok jönnek létre 34

Eclipse Neon 4.6.0 http://www.eclipse.org/downloads/ Eclipse IDE for Java EE Developers Install (unzip, eclipse-jee-neon-r-win32-x86_64) Install plugins (Help/Eclipse Marketplace) TestNG (testng): http://beust.com/eclipse Code Coverage (eclemma): http://update.eclemma.org/ Magyar billentyűzet kiosztás esetén a { (Ctrl + B) használata: Preferences General Keys Skip all brakepoints (Ctrl + Alt + B) Unbind Gradle: Gradle IDE Pack 3.7.x + 1.0.x (STS) Buildship Gradle Integration 1.0 (official) https://gradle.org/eclipse/ 35

Eclipse: Configuration - Code Style Window Preferences (type: formatter) Java Code Style Formatter New Profile name: 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 36

Eclipse: Configuration 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 37

Eclipse: Import Gradle project File Import Gradle Gradle project Project root directory: [GIT]\oejee\helloworld Import options: Gradle wrapper (recommended) De kiválasztható a helyi installáció is (Local installation directory ) Első alkalommal a Gradle wrapper leszedi a legfrissebb Gradle-t A Gradle Eclipse plugin 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). 38

IntelliJ IDEA https://www.jetbrains.com/idea/ Commercial product Community verzió pl. JEE-t nem támogat, azonban Gradle alapból van benne (és jó!), e végett professzionális munkára így is megfelelő (bár vannak kompromisszumok) Sokszor gyorsabb mint Eclipse Más billentyűkiosztás, átszokni nem könnyű 39

Gradle és IntelliJ IDEA integráció [..] apply plugin: 'idea' [..] [root] helloworld build.gradle >gradle idea cleanidea, ideamodule, ideaproject, ideaworkspace helloworld.iml helloworld.ipr helloworld.iws új állományok jönnek létre 40