SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Maven
                              Tips & Tricks
                      Brown Bag Lunch - January 2013




                                    1      Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Lifecycle
                      1. process-resources
                      2. compile
                      3. process-test-resources
                      4. test-compile
                      5. test
                      6. package
                      7. install
                      8. deploy

                                                  2   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Search engines

                      • http://search.maven.org/
                       • search through Maven Central
                      • http://mvnrepository.com/
                      • http://nexus.srm
                       • in house repository
                                         3     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version



                                             4     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version
                       • follows package naming convention
                       • reverse FQDN

                                             5     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version
                       • short explicit names are the best


                                             6     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version
                       • optional
                       • allows to specify special versions

                                             7     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version
                       • one of jar,pom,war,ear...
                       • determines the nature of the dependency

                                           8     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Artifacts naming

                      • groupId:artifactId:[classifier:]type:version
                       • version number (dot formatted)
                       • -SNAPSHOT are in development dep.

                                             9     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Project inheritance

                      • Allows to group common configuration
                       • repositories
                       • codestyle...
                      • Ease project understanding

                                         10   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies
                      • Scopes
                       • compile (default) : required for the app
                       • runtime : only necessary at runtime
                       • provided : available by the container
                       • test : required for testing phase
                       • system : absolute path (avoid this)
                                           11    Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies


                      • Don’t Repeat Yourself
                      • Make your dependencies consistent


                                          12   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies

                      • Super POM does the
                        dependenciesManagement
                       • <groupId>, <artifactId>, <version>,
                         <scope>, <exclusions>



                                         13      Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
14   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies

                      • POMs inherit the Super POM
                       • only use <dependencies>
                       • <groupId>, <artifactId>
                       • specific <scope>

                                         15   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
16   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies

                      • Plugins follow the same rule
                       • <pluginManagement> in Super POM
                         • common <configuration>
                             Always fix plugins’ versions


                                         17    Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Dependencies

                      • Plugins follow the same rule
                       • <plugin> in children
                         • specific <configuration>

                                           18    Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Properties

                      • Ease dependency upgrade
                       • only one value to update
                      • See all dependencies versions at once

                                           19    Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Troubleshoot

                      • Debug
                       • mvn -X
                      • Work offline
                       • mvn -o | --offline

                                             20   Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Troubleshoot

                      • Get the computed POM
                       • mvn help:effective-pom
                      • Get the dependency tree
                       • mvn dependency:tree

                                         21       Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Clean local repository

                      •   wget https://raw.github.com/CedricGatay/small-
                          scripts/master/groovy/CleanDir.groovy

                      •   groovy CleanDir.groovy

                      •   groovy -DdryRun=false CleanDir.groovy




                                              22     Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13
Resources


                      •   Apache Maven
                            http://maven.apache.org/

                      •   Maven dependency plugin
                            http://maven.apache.org/plugins/maven-dependency-plugin/

                      •   CleanDir groovy script
                            https://raw.github.com/jettro/small-scripts/master/groovy/CleanDir.groovy


                                                           23         Cedric Gatay - c.gatay@srmvision.com   Pulling ITSM together


jeudi 17 janvier 13

Más contenido relacionado

Maven Tips - Lunch break slides

  • 1. Maven Tips & Tricks Brown Bag Lunch - January 2013 1 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 2. Lifecycle 1. process-resources 2. compile 3. process-test-resources 4. test-compile 5. test 6. package 7. install 8. deploy 2 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 3. Search engines • http://search.maven.org/ • search through Maven Central • http://mvnrepository.com/ • http://nexus.srm • in house repository 3 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 4. Artifacts naming • groupId:artifactId:[classifier:]type:version 4 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 5. Artifacts naming • groupId:artifactId:[classifier:]type:version • follows package naming convention • reverse FQDN 5 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 6. Artifacts naming • groupId:artifactId:[classifier:]type:version • short explicit names are the best 6 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 7. Artifacts naming • groupId:artifactId:[classifier:]type:version • optional • allows to specify special versions 7 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 8. Artifacts naming • groupId:artifactId:[classifier:]type:version • one of jar,pom,war,ear... • determines the nature of the dependency 8 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 9. Artifacts naming • groupId:artifactId:[classifier:]type:version • version number (dot formatted) • -SNAPSHOT are in development dep. 9 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 10. Project inheritance • Allows to group common configuration • repositories • codestyle... • Ease project understanding 10 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 11. Dependencies • Scopes • compile (default) : required for the app • runtime : only necessary at runtime • provided : available by the container • test : required for testing phase • system : absolute path (avoid this) 11 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 12. Dependencies • Don’t Repeat Yourself • Make your dependencies consistent 12 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 13. Dependencies • Super POM does the dependenciesManagement • <groupId>, <artifactId>, <version>, <scope>, <exclusions> 13 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 14. 14 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 15. Dependencies • POMs inherit the Super POM • only use <dependencies> • <groupId>, <artifactId> • specific <scope> 15 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 16. 16 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 17. Dependencies • Plugins follow the same rule • <pluginManagement> in Super POM • common <configuration> Always fix plugins’ versions 17 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 18. Dependencies • Plugins follow the same rule • <plugin> in children • specific <configuration> 18 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 19. Properties • Ease dependency upgrade • only one value to update • See all dependencies versions at once 19 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 20. Troubleshoot • Debug • mvn -X • Work offline • mvn -o | --offline 20 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 21. Troubleshoot • Get the computed POM • mvn help:effective-pom • Get the dependency tree • mvn dependency:tree 21 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 22. Clean local repository • wget https://raw.github.com/CedricGatay/small- scripts/master/groovy/CleanDir.groovy • groovy CleanDir.groovy • groovy -DdryRun=false CleanDir.groovy 22 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13
  • 23. Resources • Apache Maven http://maven.apache.org/ • Maven dependency plugin http://maven.apache.org/plugins/maven-dependency-plugin/ • CleanDir groovy script https://raw.github.com/jettro/small-scripts/master/groovy/CleanDir.groovy 23 Cedric Gatay - c.gatay@srmvision.com Pulling ITSM together jeudi 17 janvier 13