5 minutes for Maven - Freearnaud.nauwynck.free.fr/devPerso/Pres/Pres-Maven-5minutes.pdf · junit...
Transcript of 5 minutes for Maven - Freearnaud.nauwynck.free.fr/devPerso/Pres/Pres-Maven-5minutes.pdf · junit...
First Step Using Maven● Download + Unzip from maven.apache.org● setup Environment variables
– JAVA_HOME– PATH
● http://maven.apache.org/guides/getting-started● Create the first “pom.xml” project file
– mvn archetype:generate– Enter packaging, groupId, artifactId, version
Project Archetype (Minimalist Hello World)
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>an</groupId>
<artifactId>myTestSpring</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
GroupId = domain name / directory / package nameArtifact = name of result built filePackaging = type of project: pom, jar, war, ear, ...Version
Step 2 : Customize Project● change general purpose info● customize project layout ? ... default is ok :
– src/main/java– src/test/java – ... target/classes
● add dependencies● add maven plugins
Commands to Know● build all and install in local repository:
– mvn install● (compile only: mvn compile, test only: mvn test)● generate eclipse project:
– mvn eclipse:eclipse● Deploy installed artifact:
– mvn deploy● build web site with all html reports:
– mvn site
Adding Dependency● Ex: adding dependency... Logback● Search in Nexus...
http://repository.sonatype.org● Copy & Paste <dependency> in pom.xml
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>0.9.15</version></dependency>
Downloading Dependency● mvn install
– => auto download dependency in local repository!
● re-generate eclipse project:– mvn eclipse:eclipse– in eclipse, do “refresh” on project– check M2_REPO var is set
Maven Site, Reports● mvn site:site
– by default... very simple site, with project info only
● You can configure <reports> in pom.xml– Junit, TestCoverage, FindBugs, CheckStyle!!
● or use Sonar... (prepackaged + dashboard)
Junit tests● By default, a maven project ALWAYS run all
Junit tests !!● The plugin is called “surefire”● To run test only:
– mvn test● default config : put all Junit tests in
– src\test\java● (default in “pom.xml” )
<build> <sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory> ...</build>
Junit results● maven logs:
[INFO] [surefire:test][INFO] Surefire report directory: .../target/surefire-reports------------------------------------------------------- T E S T S-------------------------------------------------------
............
Results :Tests run: 3, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ------------------------------------------------------------------------[INFO] Total time: 13 seconds[INFO] Finished at: Thu Oct 05 22:19:25 CEST 2006[INFO] Final Memory: 3M/7M[INFO] ------------------------------------------------------------------------
Junit Results● results : file:///...../target/surefire-reports● By default: xml and text files
not a friendly Html report... must be configured in reports!
Junit Html Reports● edit the pom.xml : <build>
... <plugins> <plugin>
<groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-report-plugin</artifactId>
</plugin> </plugins> ... </build>
● consult report in Html: file:///..../target/site/surefire-reports.html
● (Note: need to configure Xref reports, or disable linkXRef)
TestCoverage (Cobertura) Plugin● edit the pom.xml file: <build>
<plugins> <plugin> <groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId> <executions> <execution> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> </plugins></build>
<reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven- plugin</artifactId> </plugin> </plugins></reporting>
Running Cobertura● for report in html...
– mvn site==>
[INFO] [site:site].....
[INFO] Generate "Cobertura Test Coverage" report.[INFO] Cobertura 1.7 - GNU GPL License (NO WARRANTY) - See COPYRIGHT fileCobertura: Loaded information on 8 classes.[cobertura] INFO [main] net.sourceforge.cobertura.reporting.ComplexityCalculator - Cannot find source file during CCN computation, source=[an/TestDefaultMessengerPublisher.java][cobertura] INFO [main] net.sourceforge.cobertura.reporting.html.HTMLReport - Could not generate HTML file for source file an/TestDefaultMessengerPublisher.java: Cannot find source file, name=[an/TestDefaultMessengerPublisher.java]Report time: 996ms
[INFO] Cobertura Report generation was successful.
.....[INFO] Generate "Continuous Integration" report.
Continuous Integration● On Commit in SCM => Auto Compile in Maven● Use Continuous Integration Server : Hudson