michael youngstrom

Post on 08-Jan-2016

33 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Maven and Stack Starter. Michael Youngstrom. Notes. This is a training NOT a presentation Please ask questions Prerequisites Introduction to Java Stack Intermediate Maven Basic Java and XML skillz. Overview. Understand Maven configuration in “Stack Project” Review Intermediate Maven - PowerPoint PPT Presentation

TRANSCRIPT

Maven and Stack StarterMaven and Stack StarterMichael Youngstrom

Notes

• This is a training NOT a presentation• Please ask questions• Prerequisites– Introduction to Java Stack– Intermediate Maven– Basic Java and XML skillz

Understand Maven configuration in “Stack Project”

• Review Intermediate Maven• Useful Maven Plugins• Stack Master• Review Stack Starter• Stack Starter Template– Template Modules

Review

• Maven Plugin Execution• Maven Plugin Configuration• Maven Properties• Maven Plugin Configuration with Properties• Maven Profiles

Useful Maven Plugins

• Maven has numerous plugins– Apache Maven Community:• http://maven.apache.org/plugins

– Codehaus Community:• http://mojo.codehaus.org/plugins.html

– LDSTech (Java Stack) Plugins:• http://code.lds.org/maven-sites/stack/

– Not finding what you need? Try searching:• {some product} maven plugin

Useful 1st Party Plugins (Build)

• Java Compiler Plugin– Actually compiles Java code and tests

• Resources Plugin– Processes resources and test-resources

• AntRun Plugin– Executes an embedded Ant script– Useful for quickly hacking a Plugin

• RequireJS Example• Shade Plugin– Generates an Uber-JAR of current project and

dependencies

Useful 1st Party Plugins (Packaging)

• Jar Plugin– Creates a jar file– Specify MANIFEST.MF values

• War Plugin– Packages a web application in to a .war file– Can Merge .war files– Filter web resources

• Ear Plugin– Packages artifacts into an .ear file– Automatically generates application.xml

Useful 1st Party Plugins (Testing)• Surefire is for Unit Testing

– Executes in the “test” phase– Test results are processed after executed– Test file pattern:

• **/*Test.java• **/Test*.java• **/*TestCase.java

• Failsafe is for Integration Testing– Tests execute in the “integration-test” phase– Test results are processed in the “verify” phase– Test file pattern:

• **/IT*.java• **/*IT.java• **/*ITCase.java

• Only supports TestNG or Junit 4 (not both) in same module

Useful 1st Party Plugins (Documentation)

• Javadoc Plugin– Builds and packages project Javadocs

• Source Plugin– Builds and packages source code of project

• Plugin Plugin– Builds Maven Plugins– Builds Reference Documentation

• Site Plugin– Builds Reference site for project

• Javadocs• Browsable Sources (jxr)• Test Results• Maven Docs

Useful 3rd Party Plugins (Build)

• GWT Plugin– Compiles a GWT application– Runs GWTTestCases

• JSPC Plugin– Compiles .jsp files– Useful for finding syntax errors

Useful 3rd Party Plugins (Misc)

• Wagon Plugin– Uploads and Downloads file

• Exec Plugin– Execute a native or Java application

• Webstart Plugin– Numerous WebStart oriented utilities

• Signing• Jnlp file Generation

• TagLib Plugin– Generates JSP Taglib Documentation

LDSTech Plugins (Deploy)

• Tomcat Plugin– Packages a Tomcat “Deployable”– Configure and deploy “Vanilla” Tomcat

• T-Cat Plugin– Deploys to a T-Cat managed instance

• Websphere Plugin– Packages a Webphere “Deployable”– Deploys to Websphere instance using Middleware deploy

scripts• WAM Plugin– Wraps execution of WAM Emulator– Can deploy to remote server– Can execute wam-config packaged in a jar dependency

LDSTech Plugins (Misc)

• DB Migrator Plugin– Helps a team manage DB Schema changes– Packages migrations for future execution– Execute migrations as part of a build

• Pseudo i18n Plugin– Generates pseudo translations of properties files

Lab 1: Useful Plugins

https://tech.lds.org/wiki/Maven_and_Stack_Starter#Lab_1_Useful_Plugin

s

Stack Master

• Organizational Parent POM– The definition of a “Stack Application”

• Configuration Extensions• Manages Dependencies– Doesn’t include only manages

• Manages Plugins– Doesn’t execute only manages

• Extends stack-thirdparty– Implementation Detail

Configuration Extensions

• Support for Binary Resources– /src/main/binary– /src/test/binary

• Resource directory for I18n– /src/main/bundles

• Encoding– UTF-8 Everywhere we can

Dependencies

• Uses Dependency Management– Allows libraries to be upgraded with a “Stack Upgrade”

• Includes all Stack and major thirdparty libraries– Tested and verified to work correctly together

• Provides appropriate exclusions– Java 6– Fixing thirdparty “optional” dependencies

• All dependencies have version property– Allows upgrade or downgrade without redefinition

<properties> <springVersion>3.0.5.RELEASE</springVersion> ...</properties>

Discovering Managed Dependencies

• Use Tools– CTRL+click on stack-master– Effective POM

• View Dependency Management Report– http://code.lds.org/maven-sites/stack/modules/master/{Version}/

dependency-management.html

• View file in local repository• Many more

Plugins

• Specify version of many plugins– Including Dependencies

• Allow us to upgrade plugins with Stack Releases• Some Default configuration and executions• All plugins have a version property

Default Plugin Configuration

• Compiler & JSPC plugin set to Java 6• Add default meta data to MANIFEST.MF– Project Maven Information– Build-Revision– Build-Url– Build-Date– Stack-Version

• FailSafe Plugin– Ignore Test failures by default (independent of Surefire)– Created “itGroups” property (independent of Surefire)

Lab 2: Stack Master

https://tech.lds.org/wiki/Maven_and_Stack_Starter#Lab_2_Stack_Master

Stack Starter Review

• Stack Starter is a templating application• Produces a preconfigured project:– Fully functional– Uses supported tools– Can provides a simple demo

• The generated application is yours to evolve• “Stack” upgrades simply update tool versions not

configuration

Modules in Stack Starter

• Multi Module project– parent– web– ear (Websphere)– deploy– wam– qa– db– api

Parent Module

• Holds most build configuration– Easier to see configuration in one place

• Defines Maven repositories (internal or external)• Prefer using plugin expression configuration– Easier to create profiles– Supports configuration using command line

• The deploy* properties unify deployment config– App Server– WAM– Embedded

Stack Starter Profiles

• Stack Starter uses profiles to represent “usage scenarios”– Deployment Mode (local, embedded, remote)– App Server Config– Test Execusion Config– DB Migration Config– Wam Config

• Dev is the default scenario• Continuous focuses on continuous build config

Web Module

• The heart and soul of a “stack application”• Produces project .war file– Uses maven-war-plugin for .war packaging

• Runs Unit and Integration Tests as part of build– Supports Spring integration testing framework– Only support Junit 3.x and TestNG (No Junit 4)

Deploy Module

• Owns application server configuration• Produces .zip artifact combining config and war(s) or an ear• Tomcat Deploy

– Uses packaging “tomcat-deployable”– Uses stack-tomcat-maven-plugin– Requires 1-* war dependencies– Configuration in /src/main/resources

• Websphere Deploy– Uses packaging “was-deployable”– Uses stack-was-maven-plugin– Requires an ear dependency– Configuration in /src/main/resources

• Will execute a deployment if enabled

Wam Module

• Manages WAM Emulator• Uses stack-wam-maven-plugin– Allows Wam configuration to change based on profile– Simplified launching– Config is in /src/main/resources– Will remote deploy wam emulator if enabled

• Produces jar artifact for wam config reuse– See QA Module

QA Module

• Enables black box in container testing• Executes tests against a running container:– Selenium based UI Tests– Spring based Web Service Tests– Etc

• Produces jar containing tests– Stay Tuned!

• Supports Embedded Deployment

Stack Starter Deployment

• Typically Deployment is out of process– Sometimes requires pre installed Server (Websphere)

• Embedded Deployment is in process– Servers are bound to Maven build process– Allows setup and teardown of Servers as part of module

build• QA module supports Embedded Deployment for

Tomcat– Tomcat and Wam launched in pre-integration-test– Tomcat and Wam terminated in post-integration-test

• Enabled by default in “dev” profile

DB Module

• Manages DB Migration Tool• Uses stack-db-maven-plugin:– packaging type “stack-db-migrator”

• Produces .zip artifact– Capable of executing DB Migrations without Maven

• Will execute db migration in pre-integration-test phase– Enabled by default

API Module

• Created when using Web Service template• We’ll cover api more when doing Web Service

training

Demo

Stack Starter Maven Config Tour

Lab 3: Maven Profiles

https://tech.lds.org/wiki/Maven_and_Stack_Starter#Lab_3_Stack_Starter

Summary

• Maven has a number of useful plugins• Use of Stack Master is the definition of a “Stack

Application”• Stack Starter provides a way to use stack tools– Supports Black Box Testing– Supports remote and embedded deployment

top related