Hello Maven. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

Similar documents
Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2.

Maven POM project modelversion groupid artifactid packaging version name

MAVEN INTERVIEW QUESTIONS

Topics covered. Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session. Maven 2

MAVEN MOCK TEST MAVEN MOCK TEST III

This tutorial explains how you can use Gradle as a build automation tool for Java as well as Groovy projects.

Maven Introduction to Concepts: POM, Dependencies, Plugins, Phases

IBM. IBM WebSphere Application Server Migration Toolkit. WebSphere Application Server. Version 9.0 Release

DevOps and Maven. Eamonn de Leastar Dr. Siobhán Drohan Produced by:

Component based Development. Table of Contents. Notes. Notes. Notes. Web Application Development. Zsolt Tóth

I Got My Mojo Workin'

Struts 2 Maven Archetypes

Content. Development Tools 2(57)

JVM Survival Guide. Hadi Hariri

MAVEN MOCK TEST MAVEN MOCK TEST I

Tattletale. What is Tattletale? Enterprise archives JBoss Application Server 7 Putting it all together Roadmap

Simplified Build Management with Maven

Selenium Testing Course Content

Class Dependency Analyzer CDA Developer Guide

Maven. INF5750/ Lecture 2 (Part II)

Contents. Enterprise Systems Maven and Log4j. Maven. What is maven?

Application prerequisites

Repository Management and Sonatype Nexus. Repository Management and Sonatype Nexus

Oracle Code Day Hands On Labs (HOL) (Install, Repository, Local Deploy, DevCS, OACCS)

APEX Developer Guide. Sven van der Meer, Liam Fallon, John Keeney. Version SNAPSHOT, T11:44:57Z

Package Management and Build Tools

GAVIN KING RED HAT CEYLON SWARM

Software Engineering - Development Infrastructure 2. Kristjan Talvar Nortal

Unable To The Artifact From Any Repository Maven-clean-plugin

What is Maven? Apache Maven is a software project management and comprehension tool (build, test, packaging, reporting, site, deploy).

About me. Jesper Pedersen. Project lead for. Chairman for Boston JBoss User Group. Core developer, JBoss by Red Hat

ewon Flexy JAVA J2SE Toolkit User Guide

Getting started with Geomajas. Geomajas Developers and Geosparc

Javac and Eclipse tutorial

Chapter 1. Installation and Setup

Setting up a Maven Project

Red Hat JBoss Enterprise Application Platform 6.4

Info Error Deploying Artifact Failed To Transfer File Return Code Is 401

JBoss Tattletale. Betraying all your project's naughty little secrets

Action Developers Guide

JDO Tools Guide (v5.1)

MAVEN MOCK TEST MAVEN MOCK TEST IV

STQA Mini Project No. 1

1. The Apache Derby database

Software Installation Guide

Oracle Code Day Hands On Labs HOL

What s NetBeans? Like Eclipse:

... Fisheye Crucible Bamboo

Gradle. The Basics and Beyond

Chapter 1: First steps with JAX-WS Web Services

The Workshop. Slides (you have a copy in the zip) Practical labs Ask questions

Problem Set 0. General Instructions

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017

Installation Guide for the TITAN Designer and TITAN Executor for the Eclipse IDE

COMP220/285 Lab sessions 1-3

JBoss Enterprise Application Platform 6.2

Red Hat JBoss Web Server 3.1

Sample Spark Web-App. Overview. Prerequisites

Gant as Ant and Maven Replacement

Getting Started with Eclipse for Java

AUTOMATION TESTING FRAMEWORK FOR LUMINOUS LMS

Getting Started with Eclipse for Java

BUILD AND DEPLOY SOA PROJECTS FROM DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE

Build Automation Kurt Christensen

Why switch exist-db from Ant to Maven?

Prerequisites for Eclipse

Red Hat Fuse 7.0 Installing on Apache Karaf

JPA Enhancement Guide (v5.1)

Getting Started with Gradle

European Commission. e-trustex Installation Guide. EUROPEAN COMMISSION DIRECTORATE-GENERAL INFORMATICS Information systems Directorate

sites</distribsiteroot>

Setup and Getting Startedt Customized Java EE Training:

CS 152: Data Structures with Java Hello World with the IntelliJ IDE

Software Building (Sestavování aplikací)

For live Java EE training, please see training courses at

SAP NW CLOUD HANDS-ON WORKSHOP

Overview of Web Application Development

COMP 110/401 APPENDIX: INSTALLING AND USING ECLIPSE. Instructor: Prasun Dewan (FB 150,

Getting Started with Java. Atul Prakash

NetBeans IDE Java Quick Start Tutorial

JPA Tools Guide (v5.0)

Javascript Validator Xml Schema Eclipse Plugin

What s new in IBM Operational Decision Manager 8.9 Standard Edition

CHAPTER 6. Java Project Configuration

EMC Documentum Composer

Getting Started with Eclipse/Java

Eclipse Ignore Xml Schema Problems >>>CLICK HERE<<<

Sonatype CLM - IDE User Guide. Sonatype CLM - IDE User Guide

TIBCO StreamBase 10.2 Building and Running Applications in Studio, Studio Projects and Project Structure. November 2017

Step 2. Creating and running a project(core)

WA2451 DevOps Fundamentals. Classroom Setup Guide. Web Age Solutions Inc.

Java Manuals For Windows Xp Latest Version 7.2

gradle : Building Android Apps Mobel Meetup

An Integrated Approach to Managing Windchill Customizations. Todd Baltes Lead PLM Technical Architect SRAM

Selenium Testing Training

Introducere in Maven. Information Type: Working Standard, Disclosure Range:, Information Owner: mihai.hulea, NTT DATA Romania

Perceptive Connect Runtime

Administering Apache Geronimo With Custom Server Assemblies and Maven. David Jencks

11/8/17 GETTING STARTED

C++ Binary Dependency Management with Gradle. Hugh Greene

Transcription:

Hello Maven TestNG, Eclipse, IntelliJ IDEA Óbuda University, Java Enterprise Edition John von Neumann Faculty of Informatics Lab 2 Dávid Bedők 2017.09.19. v0.1 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 1 / 24

Java project structure How to organize our source codes? Java Build tools: batch files / bash scripts javac Apache ANT (+ Apache IVY) IDE (Eclipse, IntellJ IDEA,...) Apache Maven build tool Gradle What kinds of things should be considered? There will be unit tests? separate source folder for the unit tests (test and main) There will be resources? separate source folder for the resources (resources) There will be non-java source codes too? separate source folders for the disparate sources (java, scala, groovy, etc.) Java philosophy transparency, clarity classpath (cp) usage SAR*: JBoss specific APK**: android specific usage of JAR, WAR, EAR, SAR*, APK** packagings Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 2 / 24

Java project structure javac We can do almost everything with that (there are no rules)! We add all the source folders to the javac program via CLI. Directory structure bin/ src1/ source folder src2/ source folder The Application class uses an instance of ImperialToMetricCalculator class. Both classes are compiled into the same package, so application doesn t import the calculator class (at runtime both classes will be at the same place). \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 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 3 / 24

Java project structure Eclipse IDE Configuration of the Eclipse s default Java project : Directory structure bin/ src/ source folder Eclipse s Java project with unit tests: Directory structure bin/ src/ main/ source folder test/ source folder In most of the IDEs these rules can be configure completely (Eclipse: Project properties Java Build Path Source tab). Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 4 / 24

Java project structure Maven Maven s default directory configuration: Directory structure src/ main/ java/ source folder resources/ source folder test/ java/ source folder resources/ source folder Of course you are able to change these settings in Maven. But if we use this default configuration we will have a very simple, clean and small* build script to start the work (*: not as small as the same build script in Gradle). Note : The resources directories are part of the classpath as any other source directories. We can reach its content during runtime. Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 5 / 24

JAR - Java ARchive ZIP format which keeps (Java) byte codes (*.class), configuration files (e.g.: *.properties, *.xml, etc.) and a special metafile which contains key-value pairs (MANIFEST.MF). Directory structure META INF/ MANIFEST.MF hu/ qwaevisz/ demo/ HelloWorld.class Lorem.class log4j.xml It s structure is predefined, there is an option to store source files (e.g.: *.java, *.groovy, etc.) at the same place where the byte codes are located. 1 Manifest - Version : 1.0 2 Created - By: 1.7.0 _67 ( Oracle Corporation ) MANIFEST.MF Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 6 / 24

Executable JAR file The Main-Class key has to be part of the MANIFEST.MF file, and the value of this key is the full qualified name 1 Manifest - Version : 1.0 of the entry point of the application. 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) Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 7 / 24

Eclipse OXYGEN IDE, 2017 June Eclipse IDE for Java EE Developers Download: https://www.eclipse.org/downloads/ Version: 4.7.0 Install: unzip or installer Integrated plugins: Gradle Maven Git EclEmma Java Code Coverage... Additional plugins (Help / Eclipse Marketplace): TestNG (filter: testng) http://beust.com/eclipse In case of Hungarian keyboard layout (and usage) you have to turn off some shortcut keys (e.g. "{" (Ctrl + B): Preferences General Keys Skip all brakepoints (Ctrl + Alt + B) Unbind Basic usage of Eclipse IDE: http://users.nik.uni obuda.hu/bedok.david/jse.html Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 8 / 24

Eclipse configuration 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 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 9 / 24

Eclipse configuration 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 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 10 / 24

IntelliJ IDEA IDE Download: https://www.jetbrains.com/idea/ Commercial product The community version doesn t support the JavaEE, but without this feature it is usable for professional work as well (event JavaEE projects). Sometimes it is faster than Eclipse Different shortcut keys, hard to get used to Integrated Maven/Gradle/Git plugins Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 11 / 24

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 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 12 / 24

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

Unit Test with TestNG 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 Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 14 / 24

Apache Maven Build tool https://maven.apache.org/ Download: https://maven.apache.org/download.cgi Version: 3.5.0 Apache Maven is a software project management and comprehension tool. supports monorepo and multi-repo as well POM: Project Object Model Install: unzip Environment Variables: MAVEN_HOME c:\apps\apache maven 3.3.9 Path módosítása %Path%;%MAVEN_HOME%\bin Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 15 / 24

Maven Major properties Maven s primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. Making the build process easy Providing a uniform build system Providing quality project information Providing guidelines for best practices development Allowing transparent migration to new features Maven is - at its heart - a plugin execution framework, all work is done by plugins. Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 16 / 24

Maven 1 > mvn -- version 2 Apache Maven 3.3.9 ( bb52d8502b132ec0a5a3f4c09453c07478323dc5 ; 2015-11 -10 T17 :41:47+01:00) 3 Maven home : c:\ apps \ apache - maven -3.3.9\ bin \.. 4 Java version : 1.8.0 _102, vendor : Oracle Corporation 5 Java home : c:\ apps \ java \ jdk1.8.0 _102 \ jre 6 Default locale : en_us, platform encoding : Cp1252 7 OS name : " windows 7", version : "6.1", arch : " amd64 ", family : " dos " Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 17 / 24

Maven Phases validate validate the project is correct and all necessary information is available compile compile the source code of the project test test the compiled source code using a suitable unit testing framework package take the compiled code and package it in its distributable format, such as a jar verify run any checks on results of integration tests to ensure quality criteria are met install install the package into the local repository, for use as a dependency in other projects locally deploy done in the build environment, copies the final package to the remote repository for sharing with other developers and projects clean cleans up artifacts created by prior builds site generates site documentation for this project Phases are actually mapped to underlying goals (e.g.: for example, package executes jar:jar if the project type is a jar, and war:war if the project type is a jar). Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 18 / 24

Maven Archetype With the help of archetypes we could generate blueprint projects which we should do it anyway (if we follow best practices). Without these blueprints, we have to type a lot even for a simple hello world project. But: we will ignore the archetypes entirely in the future... Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 19 / 24

Create HelloWorld with the help of archetypes maven\helloworld 1 > mvn archetype : generate - DgroupId = hu. qwaevisz. hello - DartifactId = hellomaven - DarchetypeArtifactId = maven - archetype - quickstart - DinteractiveMode = false archetype Maven plugin generate goal (belongs to the plugin) The project structure and the pom.xml are created. Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 20 / 24

Hello Maven! 1 < 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 / maven - v4_0_0. xsd "> 2 < modelversion >4.0.0 </ modelversion > 3 < groupid >hu. qwaevisz. hello </ groupid > 4 < artifactid > hellomaven </ artifactid > 5 < packaging >jar </ packaging > 6 < version >1.0 </ version > 7 <name >Hello Maven </ name > 8 < properties > 9 < project. build. sourceencoding >UTF -8 </ project. build. sourceencoding 10 </ properties > 11 < dependencies > 12 < dependency > 13 < groupid >org. testng </ groupid > 14 < artifactid > testng </ artifactid > 15 < version >6.11 </ version > 16 <scope >test </ scope > 17 </ dependency > <packaging>jar</packaging> The output of 18 </ dependencies > the project will be a JAR file. 19 </ project > Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 21 / 24

Maven Compile and run 1 > mvn clean package Output: target/hellomaven 1.0.jar 1 > java -cp target / hellomaven -1.0. jar hu. qwaevisz. hello. Application Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 22 / 24

Maven Eclipse integration Eclipse Eclipse m2e plugin recognizes the configuration files of maven and create/modify the eclipse project configuration files according to that. There is an Eclipse plugin for Maven which produces the Eclipse configuration files, but this plugin has been deprecated already. Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 23 / 24

Eclipse Maven project File Import... Maven Existing Maven Project Project root directory: \helloworld Where do I execute Maven s goals? The main goal of the m2e plugin is to geneate and handle the Maven s project structure. Run and manage the Maven s tasks from Eclipse is an other thing.. (execute Maven tasks from command line is a very comfortable and IDE independent (!) way of working process). Dávid Bedők (UNI-OBUDA) Hello JavaEE 2017.09.19. v0.1 24 / 24