SlideShare a Scribd company logo
1 of 88
Maven Plugins EvgenyGoldin
evgeny-goldin.com/wiki/Maven-plugins evgeny-goldin.org/artifactory/plugins-releases evgeny-goldin.org/artifactory/libs-releases <groupId>com.goldin.plugins</groupId> <artifactId>maven-xyz-plugin</artifactId> <version>0.2.2</version>
maven-copy-plugin Copies, packs, unpacks, downloads, uploads ..  .. files, archives, Maven <dependencies> maven-properties-plugin Creates new Maven properties at run-time .. .. evaluating Groovy expressions!  maven-jenkins-plugin Generates Hudson/Jenkins jobs Organizes them hierarchically in a single POM
maven-assert-plugin Verifies files exist, properties defined, etc. Verifies any Groovy expression! maven-mail-plugin Sends e-mails with attachments from Maven Works great for build-time reports maven-spring-batch-plugin Invokes Spring Batch job as part of Maven build
maven-copy-plugin
Copies, packs, unpacks, downloads, uploads ..  .. files, archives, Maven <dependencies> Filters and replaces content Updates archives Unpacks Zip entries Downloads and uploadsfrom/to HTTP, SCP, FTP Built-in Groovy support
<groupId>com.goldin.plugins</groupId> <artifactId>maven-copy-plugin</artifactId> <version>0.2.2</version>
<configuration>: <configuration> <resources>         <resource>..</resource>         <resource>..</resource> </resources> <configuration>
Copy files: <resource> <targetPath>target directory</targetPath> <directory>base directory</directory> <include>**/*.xml, *.txt, **/lib/*.jar</include> <exclude>**/*-template.xml</exclude> </resource>
Copy file: <resource>     <targetPath>target directory</targetPath> <file>file to copy</file> </resource>
Filter files: <resource>     <targetPath>..</targetPath>     <directory>..</directory>     <include>..</include> <filtering>true</filtering> </resource>
Replace content – single <replace>: <resource>     <targetPath>..</targetPath>     <file>..</file> <replace>         <from>regular expression</from>         <to>replacement  content</to>     </replace> </resource>
Replace content - multiple <replaces>: <resource>     <targetPath>..</targetPath>     <file>..</file> <replaces>         <replace>..</replace>         <replace>..</replace>     </replaces> </resource>
<filter> + <replace>: <resource>     <targetPath>..</targetPath>     <file>..</file> <filtering>true</filtering> <replace>..</replaces> </resource>
Copy <dependency>: <resource>     <targetPath>..</targetPath> <dependency>         <groupId>..</groupId>         <artifactId>..</artifactId> </dependency> </resource>
Copy <dependencies>: <resource>     <targetPath>..</targetPath> <dependencies>         <dependency>..</dependency>         <dependency>..</dependency> </dependencies> </resource>
Pack archive: <resource>     <targetPath>path/file.zip</targetPath>     <directory>..</directory>     <include>..</include> <pack>true</pack> </resource>
Formats supported: Zip, jar, war, ear, hpi Tar, tar.gz, tgz Tar.bz2, tzp, tbz2 Ant + TrueZip
Update archive: <resource>     <targetPath>path/file.zip</targetPath>     <directory>..</directory>     <include>..</include>     <pack>true</pack>     <update>true</update> </resource>
Attachartifact: <resource>     <targetPath>path/file.zip</targetPath>     <directory>..</directory>     <include>..</include>     <pack>true</pack>     <attachArtifact>true</attachArtifact> </resource>
Deployartifact: <resource>     <targetPath>path/file.zip</targetPath>     <directory>..</directory>     <include>..</include>     <pack>true</pack> <deploy>repoUrl|groupId|artifactId|version</deploy> </resource>
Unpack archive: <resource>     <targetPath>..</targetPath>     <file>some/file.zip</directory>     <unpack>true</unpack> </resource>
Formats supported: Zip, jar, war, ear, hpi Tar, tar.gz, tgz Tar.bz2, tzp, tbz2 Ant + TrueZip
Unpack archives: <resource>     <targetPath>..</targetPath>     <directory>..</directory>     <include>*.jar, *.zip, *.tar.gz</include>     <unpack>true</unpack> </resource>
Unpack <dependency>: <resource>     <targetPath>..</targetPath> <dependency>         <groupId>..</groupId>         <artifactId>..</artifactId> </dependency>     <unpack>true</unpack> </resource>
Unpack <dependencies>: <resource>     <targetPath>..</targetPath> <dependencies>         <dependency>..</dependency>         <dependency>..</dependency> </dependencies>     <unpack>true</unpack> </resource>
Unpack Zip entry: <resource>     <targetPath>..</targetPath>     <file>path/file.zip</file> <zipEntry>entry/path/file.txt</zipEntry>     <unpack>true</unpack> </resource>
Unpack Zip entries (1): <resource>     <targetPath>..</targetPath>     <file>path/file.zip</file> <zipEntry>entry/**/*.txt</zipEntry>     <unpack>true</unpack> </resource>
Unpack Zip entries (2): <resource>     <zipEntries> <zipEntry>..</zipEntry> <zipEntry>..</zipEntry> </zipEntries>     <unpack>true</unpack> </resource>
Download files – network drive: <resource>     <targetPath>..</targetPath> <directory>networkrive</directory>     <include>..</include>     <exclude>..</exclude> </resource>
Download file – HTTP: <resource>     <targetPath>..</targetPath> <file>http://host/file</file> </resource>
Download file – SCP: <resource>     <targetPath>..</targetPath>     <directory>scp://user:pass@host:/file</directory> </resource>
Download files – FTP: <resource>     <targetPath>..</targetPath>     <directory>ftp://user:pass@host:/path</directory> <include>..</include> <exclude>..</exclude> </resource>
Download files – FTP + wget: <resource>     <targetPath>..</targetPath>     <directory>ftp://user:pass@host:/path</directory> <include>..</include> <wget>wget.exe</wget> </resource>
Download + unpack: <resource>     <targetPath>..</targetPath>     http / scp / ftp <unpack>true</unpack> </resource>
Upload files – network drive: <resource>     <targetPath>networkrive</targetPath>     <directory>..</directory>     <include>..</include> </resource>
Upload files – SCP: <resource>     <targetPath>scp://user:pass@host:/dir</targetPath>     <directory>..</directory>     <include>..</include> </resource>
Upload files – FTP: <resource>     <targetPath>ftp://user:pass@host:/dir</targetPath>     <directory>..</directory>     <include>..</include> </resource>
Delete files: <resource>     <directory>..</directory>     <include>..</include> <clean>true</clean>     <cleanEmptyDirectories>true</cleanEmptyDirectories> </resource>
Create file (= copy other file + <replace>): <resource>     <targetPath>..</targetPath>     <file>${project.basedir}/pom.xml</file> <replace><to>new content</to></replace>     <destFileName>newName.txt</destFileName> </resource>
Create directory: <resource>     <targetPath>..</targetPath> <mkdir>true</mkdir> </resource>
Groovy support - <runIf>: <configuration> <runIf>{{ Groovy Expression }}</runIf>     <resource> <runIf>{{ Groovy Expression }}</runIf>         // Boolean.valueOf( String.valueOf( returnValue ))     </resource> </configuration>
Groovy support - <description>: <resource>     <description>Time: {{ new Date() }}</description>     …     </resource> Logs <resource> start, end, and execution time in ms.
Groovy support - <replace>: <resource>     …     <replace> <to>File updated at: {{ new Date() }}</to>         <groovy>true</groovy>     </replace> </resource>
Groovy support – FTP download + <listFilter>: <resource>     FTP download     <wget>wget.exe</wget> <listFilter>{{ files.keySet().findAll{ .. }  }}</listFilter> </resource> Filters files to download.
Groovy support - <filter>: <resource>     <targetPath>..</targetPath>     … <filter>{{ files.findAll{ .. }  }}</filter> </resource> Filters files to copy, pack, unpack, etc.
Groovy support - <process>: <resource>     <targetPath>..</targetPath>     … <process>{{ println “Files: $files” }}</process> </resource> Processes files after they are copied, packed, etc.
Groovy support - context: “project” - org.apache.maven.project.MavenProject “session” - org.apache.maven.execution.MavenSession “mavenVersion” All Maven and System properties <this-property> => “thisProperty” “os.name”          => “osName” {{ new File( project.basedir, “pom.xml” ) }}
maven-properties-plugin
Creates new Mavenpropertiesatrun time ..  .. evaluatingGroovy expressions! Works best in combinationwith <runIf> Allowscreatingdynamic content for the mail plugin
<groupId>com.goldin.plugins</groupId> <artifactId>maven-properties-plugin</artifactId> <version>0.2.2</version>
<configuration>: <configuration>     <properties> <property>..</property> <property>..</property>     </properties> </configuration>
<property>: <property>     <name>propertyTrue</name> <value>{{ 't' + 'r' + 'u' + 'e' }}</value> </property> … <runIf>{{ propertyTrue }}</runIf> <runIf>{{ ! Boolean.valueOf( propertyTrue ) }}</runIf>
Groovycontext: “project” - org.apache.maven.project.MavenProject “session” - org.apache.maven.execution.MavenSession “mavenVersion” All Maven and System properties <this-property> => “thisProperty” “os.name”          => “osName” {{ project.basedir.canonicalPath }}
maven-jenkins-plugin
Generates Hudson/Jenkins jobs Definesthem in a single POM Jobs canformhierarchicall groups (reuse!) Supports jobs invocation Supports Artifactory deployment
<groupId>com.goldin.plugins</groupId> <artifactId>maven-jenkins-plugin</artifactId> <version>0.2.2</version>
<configuration> : <configuration>     <outputDirectory>.jenkins/jobs</outputDirectory>     <jobs> <job>..</job> <job>..</job>     </jobs> </configuration>
<job> : <job> <id>jobName</id>     <mavenName>apache-maven-2.2.1</mavenName> <mavenOpts>-Xmx256m</mavenOpts>     <mavenGoals>–e –B –U clean install</mavenGoals>     … </job>
<job> : <jdkName> <pom> <repositories> <privateRepository> <mail> … All standard job configuration options.
Extending <job> (1): <job> <id>baseJob</id> <abstract>true</abstract>     <jdkName>..</jdkName>        <mavenName>..</mavenName>     <mavenGoals>..</mavenGoals> </job>
Extending <job> (2): <job>     <id>jobName</id> <parent>baseJob</parent>     <repository>..</repository> </job> Only job-specific values are specified.
Description Table:
Invoking jobs: <job>     <id>jobName</id>… <invoke>         <jobs>jobA, jobB, jobC</jobs>     </invoke> </job>
Invoking jobs - conditions: <invoke>     <jobs>jobA, jobB, jobC</jobs>     <always>false</always> <stable>true</stable> <unstable>false</unstable> <failed>false</failed> </invoke>
Artifactory deployment: <job> <artifactory>         <name>http://host/artifactory</name>         <user>deployer</user>         <scrambledPassword>..</scrambledPassword> </artifactory> </job>
Environments supported: SCM: Subversion, Git, CVS, NullSCM (none) Maven jobs Free-style jobs Plugins required: “Parameterized Trigger Plugin” v2.4 or higher “ArtifactoryPlugin” v1.3.4 or higher
maven-assert-plugin
Build assertions! Propertiesdefined Files exist Directories identical Groovy expressions evaluate to true Wasdriven by plugins tests
<groupId>com.goldin.plugins</groupId> <artifactId>maven-assert-plugin</artifactId> <version>0.2.2</version>
<configuration> : <configuration>     <assertProperties>..</assertProperties>     <assertFiles>..</assertFiles>     <assertEqual>..</assertEqual>     <assertGroovy>..</assertGroovy> </configuration>
<assertProperties> : <assertProperties>     job-parameter     BUILD_NUMBER     JENKINS_URL </assertProperties> Makes sure all job parameters are specified.
<assertFiles> : <assertFiles>     ${data-files}/*.xml     ${project.build.directory}/setup.tar.gz     ${project.build.directory}/ini </assertFiles> Makes sure all files and directories are created.
<assertEqual> : <assertEqual>      ${dir}/expected|${outputDir}/result     ${dir}/expected|${outputDir}/result|**/*.xml </assertEqual> Makes sure directories are identical (+/- pattern).
<assertGroovy> : <assertGroovy>  project.basedir.directorySize() > 0     timestamp ==~ /^{2} + {4}, {2}:{2}:{2}$/ </assertGroovy> Evaluates «assertline» for each line (power assert!)
Groovycontext: File.directorySize() Object.splitWith() – see GCommons “project” - org.apache.maven.project.MavenProject “session” - org.apache.maven.execution.MavenSession “mavenVersion” All Maven and System properties
maven-mail-plugin
Sends e-mails with attachments from Maven Works great for build-time reports Properties plugin allows for dynamic content
<groupId>com.goldin.plugins</groupId> <artifactId>maven-mail-plugin</artifactId> <version>0.2.2</version>
<configuration>: <configuration> <smtp>..</smtp>     <from>..</from>     <mails><to>..</to></mails>     <subject>..</subject>     <text>..</text> </configuration>
<mails>: <mails> <to>user@mail; user2@mail</to> <cc>User Name &lt;user@mail&gt;;</cc> <bcc>..</bcc> </mails> Use &lt;user@mail&gt; or CDATA Addresses are «;»-separated to allowspaces in names
Attaching files: <configuration> <textFile>..</textFile> <files>         <file>..</file>         <file>..</file> </files> </configuration>
maven-spring-batch-plugin
Invokes SpringBatch job as part of Maven build Maven is a good platform for batch processes!
<groupId>com.goldin.plugins</groupId> <artifactId>maven-spring-batch-plugin</artifactId> <version>0.2.2</version>
<configuration>: <configuration> <jobId>jobId</jobId>     <configLocations> classpath:/springbatch/infra/job-launcher.xml file:/job/context.xml     </configLocations> </configuration>
Properties: <configuration> <props>         name = value classpath:/springbatch/infra/job-runner.properties file:/job/context.properties </props> </configuration>
evgeny-goldin.com/wiki/Maven-plugins maven-plugins.994461.n3.nabble.com evgeny-goldin.org/artifactory/plugins-releases evgeny-goldin.org/artifactory/libs-releases evgeny-goldin.org/youtrack/issues/pl @evgeny_goldin evgenyg@gmail.com

More Related Content

What's hot

CITEC #CON2-Dirty Attack with Google Hacking
CITEC #CON2-Dirty Attack with Google HackingCITEC #CON2-Dirty Attack with Google Hacking
CITEC #CON2-Dirty Attack with Google HackingPrathan Phongthiproek
 
There's Nothing so Permanent as Temporary
There's Nothing so Permanent as TemporaryThere's Nothing so Permanent as Temporary
There's Nothing so Permanent as TemporaryPositive Hack Days
 
HTTP and Your Angry Dog
HTTP and Your Angry DogHTTP and Your Angry Dog
HTTP and Your Angry DogRoss Tuck
 
5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscotMichael Ewins
 
Application Logging With The ELK Stack
Application Logging With The ELK StackApplication Logging With The ELK Stack
Application Logging With The ELK Stackbenwaine
 
Making sense of users' Web activities
Making sense of users' Web activitiesMaking sense of users' Web activities
Making sense of users' Web activitiesMathieu d'Aquin
 
How to optimise TTFB - BrightonSEO 2020
How to optimise TTFB - BrightonSEO 2020How to optimise TTFB - BrightonSEO 2020
How to optimise TTFB - BrightonSEO 2020Roxana Stingu
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneAdrian Cole
 
How to get inside the search engine crawler head - Marketing Festival
How to get inside the search engine crawler head - Marketing FestivalHow to get inside the search engine crawler head - Marketing Festival
How to get inside the search engine crawler head - Marketing FestivalFilip Podstavec
 
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in PerlNagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in PerlNagios
 
CouchDB Day NYC 2017: Introduction to CouchDB 2.0
CouchDB Day NYC 2017: Introduction to CouchDB 2.0CouchDB Day NYC 2017: Introduction to CouchDB 2.0
CouchDB Day NYC 2017: Introduction to CouchDB 2.0IBM Cloud Data Services
 
Bea con anatomy-of-web-attack
Bea con anatomy-of-web-attackBea con anatomy-of-web-attack
Bea con anatomy-of-web-attackPatrick Laverty
 
Adventures in infrastructure as code
Adventures in infrastructure as codeAdventures in infrastructure as code
Adventures in infrastructure as codeJulian Simpson
 
Application Logging With Logstash
Application Logging With LogstashApplication Logging With Logstash
Application Logging With Logstashbenwaine
 

What's hot (20)

CITEC #CON2-Dirty Attack with Google Hacking
CITEC #CON2-Dirty Attack with Google HackingCITEC #CON2-Dirty Attack with Google Hacking
CITEC #CON2-Dirty Attack with Google Hacking
 
There's Nothing so Permanent as Temporary
There's Nothing so Permanent as TemporaryThere's Nothing so Permanent as Temporary
There's Nothing so Permanent as Temporary
 
HTTP and Your Angry Dog
HTTP and Your Angry DogHTTP and Your Angry Dog
HTTP and Your Angry Dog
 
5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot5 steps to faster web sites & HTML5 games - updated for DDDscot
5 steps to faster web sites & HTML5 games - updated for DDDscot
 
Linux intermediate level
Linux intermediate levelLinux intermediate level
Linux intermediate level
 
Webscraping with asyncio
Webscraping with asyncioWebscraping with asyncio
Webscraping with asyncio
 
Application Logging With The ELK Stack
Application Logging With The ELK StackApplication Logging With The ELK Stack
Application Logging With The ELK Stack
 
CouchDB Day NYC 2017: Replication
CouchDB Day NYC 2017: ReplicationCouchDB Day NYC 2017: Replication
CouchDB Day NYC 2017: Replication
 
Making sense of users' Web activities
Making sense of users' Web activitiesMaking sense of users' Web activities
Making sense of users' Web activities
 
How to optimise TTFB - BrightonSEO 2020
How to optimise TTFB - BrightonSEO 2020How to optimise TTFB - BrightonSEO 2020
How to optimise TTFB - BrightonSEO 2020
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't one
 
How to get inside the search engine crawler head - Marketing Festival
How to get inside the search engine crawler head - Marketing FestivalHow to get inside the search engine crawler head - Marketing Festival
How to get inside the search engine crawler head - Marketing Festival
 
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in PerlNagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
Nagios Conference 2012 - Nathan Vonnahme - Writing Custom Nagios Plugins in Perl
 
FP in JS-Land
FP in JS-LandFP in JS-Land
FP in JS-Land
 
CouchDB Day NYC 2017: Introduction to CouchDB 2.0
CouchDB Day NYC 2017: Introduction to CouchDB 2.0CouchDB Day NYC 2017: Introduction to CouchDB 2.0
CouchDB Day NYC 2017: Introduction to CouchDB 2.0
 
CouchDB Day NYC 2017: MapReduce Views
CouchDB Day NYC 2017: MapReduce ViewsCouchDB Day NYC 2017: MapReduce Views
CouchDB Day NYC 2017: MapReduce Views
 
Bea con anatomy-of-web-attack
Bea con anatomy-of-web-attackBea con anatomy-of-web-attack
Bea con anatomy-of-web-attack
 
Adventures in infrastructure as code
Adventures in infrastructure as codeAdventures in infrastructure as code
Adventures in infrastructure as code
 
Application Logging With Logstash
Application Logging With LogstashApplication Logging With Logstash
Application Logging With Logstash
 
H
HH
H
 

Viewers also liked

Redvolucion historias inspiradoras jennifer
Redvolucion historias inspiradoras jennifer Redvolucion historias inspiradoras jennifer
Redvolucion historias inspiradoras jennifer Sire Olivo
 
Visual Storytelling Part 1: PLOT Your Presentation
Visual Storytelling Part 1: PLOT Your PresentationVisual Storytelling Part 1: PLOT Your Presentation
Visual Storytelling Part 1: PLOT Your PresentationIvan Ruiz
 
Panda lacotion
Panda lacotionPanda lacotion
Panda lacotiongeleya
 
Internal Social and Collaboration presented at 18F
Internal Social and Collaboration presented at 18FInternal Social and Collaboration presented at 18F
Internal Social and Collaboration presented at 18FThomas Vander Wal
 
Изучение планет Солнечной системы
Изучение планет Солнечной системыИзучение планет Солнечной системы
Изучение планет Солнечной системыredy
 
Open Budget Data: A Landscape Analysis
Open Budget Data: A Landscape AnalysisOpen Budget Data: A Landscape Analysis
Open Budget Data: A Landscape AnalysisJonathan Gray
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Guilherme Ponce
 
Acceso electrónico a los servicios públicos.
Acceso electrónico a los servicios públicos.Acceso electrónico a los servicios públicos.
Acceso electrónico a los servicios públicos.José María
 
Brief overview of New Curriculum for IL
Brief overview of New Curriculum for ILBrief overview of New Curriculum for IL
Brief overview of New Curriculum for ILJane Secker
 
Tableau - ANAND CHOKHI DEMO - Filled Map Chart
Tableau - ANAND CHOKHI DEMO - Filled Map ChartTableau - ANAND CHOKHI DEMO - Filled Map Chart
Tableau - ANAND CHOKHI DEMO - Filled Map ChartAnand Chokshi
 
Marketing with Digital Tools
Marketing with Digital ToolsMarketing with Digital Tools
Marketing with Digital Toolscoursestorm
 

Viewers also liked (16)

Release It!
Release It!Release It!
Release It!
 
Redvolucion historias inspiradoras jennifer
Redvolucion historias inspiradoras jennifer Redvolucion historias inspiradoras jennifer
Redvolucion historias inspiradoras jennifer
 
Daily Newsletter: 19th July, 2011
Daily Newsletter: 19th July, 2011Daily Newsletter: 19th July, 2011
Daily Newsletter: 19th July, 2011
 
Visual Storytelling Part 1: PLOT Your Presentation
Visual Storytelling Part 1: PLOT Your PresentationVisual Storytelling Part 1: PLOT Your Presentation
Visual Storytelling Part 1: PLOT Your Presentation
 
Panda lacotion
Panda lacotionPanda lacotion
Panda lacotion
 
Ref
RefRef
Ref
 
Patrones de medición
Patrones de mediciónPatrones de medición
Patrones de medición
 
Internal Social and Collaboration presented at 18F
Internal Social and Collaboration presented at 18FInternal Social and Collaboration presented at 18F
Internal Social and Collaboration presented at 18F
 
Изучение планет Солнечной системы
Изучение планет Солнечной системыИзучение планет Солнечной системы
Изучение планет Солнечной системы
 
Open Budget Data: A Landscape Analysis
Open Budget Data: A Landscape AnalysisOpen Budget Data: A Landscape Analysis
Open Budget Data: A Landscape Analysis
 
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
Case estágio - Proposta de interface para um módulo de estratégia do sistema ...
 
Acceso electrónico a los servicios públicos.
Acceso electrónico a los servicios públicos.Acceso electrónico a los servicios públicos.
Acceso electrónico a los servicios públicos.
 
Brief overview of New Curriculum for IL
Brief overview of New Curriculum for ILBrief overview of New Curriculum for IL
Brief overview of New Curriculum for IL
 
Tableau - ANAND CHOKHI DEMO - Filled Map Chart
Tableau - ANAND CHOKHI DEMO - Filled Map ChartTableau - ANAND CHOKHI DEMO - Filled Map Chart
Tableau - ANAND CHOKHI DEMO - Filled Map Chart
 
scan
scanscan
scan
 
Marketing with Digital Tools
Marketing with Digital ToolsMarketing with Digital Tools
Marketing with Digital Tools
 

Similar to Maven Plugins

Dexterity in 15 minutes or less
Dexterity in 15 minutes or lessDexterity in 15 minutes or less
Dexterity in 15 minutes or lessrijk.stofberg
 
Maven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherMaven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherCarlos Sanchez
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternselliando dias
 
Running PHP on a Java container
Running PHP on a Java containerRunning PHP on a Java container
Running PHP on a Java containernetinhoteixeira
 
Using Ant To Build J2 Ee Applications
Using Ant To Build J2 Ee ApplicationsUsing Ant To Build J2 Ee Applications
Using Ant To Build J2 Ee ApplicationsRajesh Kumar
 
Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Michiel Rook
 
Agile Descriptions
Agile DescriptionsAgile Descriptions
Agile DescriptionsTony Hammond
 
Introduction To Ant
Introduction To AntIntroduction To Ant
Introduction To AntRajesh Kumar
 
Slides Aquarium Paris 2008
Slides Aquarium Paris 2008Slides Aquarium Paris 2008
Slides Aquarium Paris 2008julien.ponge
 
Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007Robert Treat
 

Similar to Maven Plugins (20)

Dexterity in 15 minutes or less
Dexterity in 15 minutes or lessDexterity in 15 minutes or less
Dexterity in 15 minutes or less
 
Maven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherMaven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working Together
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patterns
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
Deploy Flex with Apache Ant
Deploy Flex with Apache AntDeploy Flex with Apache Ant
Deploy Flex with Apache Ant
 
Sword v2 at UKCoRR
Sword v2 at UKCoRRSword v2 at UKCoRR
Sword v2 at UKCoRR
 
Running PHP on a Java container
Running PHP on a Java containerRunning PHP on a Java container
Running PHP on a Java container
 
Ant User Guide
Ant User GuideAnt User Guide
Ant User Guide
 
Maven
MavenMaven
Maven
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 
Using Ant To Build J2 Ee Applications
Using Ant To Build J2 Ee ApplicationsUsing Ant To Build J2 Ee Applications
Using Ant To Build J2 Ee Applications
 
Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)
 
Agile Descriptions
Agile DescriptionsAgile Descriptions
Agile Descriptions
 
Introduction To Ant
Introduction To AntIntroduction To Ant
Introduction To Ant
 
Slides Aquarium Paris 2008
Slides Aquarium Paris 2008Slides Aquarium Paris 2008
Slides Aquarium Paris 2008
 
Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007
 
Xml Zoe
Xml ZoeXml Zoe
Xml Zoe
 
Xml Zoe
Xml ZoeXml Zoe
Xml Zoe
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Apache Ant
Apache AntApache Ant
Apache Ant
 

More from Evgeny Goldin

Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayEvgeny Goldin
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkinsEvgeny Goldin
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in GroovyEvgeny Goldin
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions AnatomyEvgeny Goldin
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about GradleEvgeny Goldin
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing GroovyEvgeny Goldin
 

More from Evgeny Goldin (8)

Alexa skills
Alexa skillsAlexa skills
Alexa skills
 
Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkins
 
Functional Programming in Groovy
Functional Programming in GroovyFunctional Programming in Groovy
Functional Programming in Groovy
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions Anatomy
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about Gradle
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing Groovy
 
Groovy Maven Builds
Groovy Maven BuildsGroovy Maven Builds
Groovy Maven Builds
 

Recently uploaded

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

Maven Plugins