SlideShare a Scribd company logo
Maven 3 / Tycho
Eclipse and Maven coexisting in harmony

 Karsten Thoms
 2010-05-10


© itemis AG 2010 – Alle Rechte vorbehalten   1
About me

 • Working as consultant for itemis
 • Over 10 years experience in Enterprise Java, Model

   Driven Software Development
 • Open Source enthusiast, MDSD evangelist

        •   Project (co-)lead: The Fornax Platform, fit4oaw, Hybridlabs
            Beautifier
        •   Committer / Contributor: Eclipse EMFT MWE, M2T Xpand,
            openArchitectureWare, Fornax Maven plugin for oAW/MWE,
            Fornax UML2 cartridges for oAW, AUTOSAR Tool Platform
            (ARTOP)
 •   Using Maven in my Open Source projects and some
     customer projects

© itemis AG 2010 – Alle Rechte vorbehalten                                2
Maven Tycho


© itemis AG 2010 – Alle Rechte vorbehalten      3
Example used for Tycho demo

•   MP3 Manager
     • RCP Example from Kai Tödter

     • http://max-server.myftp.org/trac/mp3m




© itemis AG 2010 – Alle Rechte vorbehalten               4
Example RCP Application

•   Project types in this application
      • Plugins

      • Features


      • Update Site


      • Products


•   Product come with different brandings: blue,
    orange, german
•   Build Target:
      • Create ZIP distributions for branded

        products




© itemis AG 2010 – Alle Rechte vorbehalten           5
Automated Build for Eclipse/OSGi

•   Several frameworks serving this task
      • PDE Build

      • Buckminster


      • Pluginbuilder


      • b3


      • Athena Common Build Infrastructure

•   Often hard to setup, maintain and debug a working headless build
•   P2 makes some things better and many worse




© itemis AG 2010 – Alle Rechte vorbehalten                         6
Tycho

• Maven extensions for Eclipse / OSGi
• Seamless build for Eclipse artifacts

        •
            Plugins, Plugin-Tests, Features, Update Sites, Products
• Manifest-first approach
• POM needed for each module, but minimal one

• Tight integration with Equinox / P2

• Proposed as project under the Eclipse Technology

  project in April 2010



© itemis AG 2010 – Alle Rechte vorbehalten                        7
Eclipse project structure




© itemis AG 2010 – Alle Rechte vorbehalten             8
Maven project structure




© itemis AG 2010 – Alle Rechte vorbehalten           9
Packaging extensions

 • Target artifact type is specified with <packaging>
   element in pom.xml
 • Standard packaging types:

        •
          pom                                - jar
        •
          war                                - ear
        •
          ...
 •   Tycho adds Eclipse specific packaging types
        •
          eclipse-plugin                     - eclipse-test-plugin
        •
          eclipse-feature                    - eclipse-update-site
        •
          eclipse-application

© itemis AG 2010 – Alle Rechte vorbehalten                           10
Target Platform

• Set of plugins and features, against which modules/
  projects are built
• Computed seperately for each module

• Configurable via

        •
            System property
            -Dtycho.targetPlatform=<eclipsehome>
        •
            Repositories in POM with
            <layout>p2</layout>
        •
            Target Platform Definition file (.target) stored in a Maven
            repository



© itemis AG 2010 – Alle Rechte vorbehalten                                11
Target Platform - Repositories

    <repositories>
        <repository>
            <id>galileo</id>
           <layout>p2</layout>
           <url>http://download.eclipse.org/
          releases/galileo</url>
        </repository>
        <repository>... </repository>
    </repositories>

© itemis AG 2010 – Alle Rechte vorbehalten                  12
Repositories

P2 Repository                                 Maven2 Repository




 © itemis AG 2010 – Alle Rechte vorbehalten                       13
Creating a P2 Repository with Equinox
                           FeaturesAndBundlesPublisher




© itemis AG 2010 – Alle Rechte vorbehalten                     14
Creating a P2 Repository with Equinox
                           FeaturesAndBundlesPublisher




© itemis AG 2010 – Alle Rechte vorbehalten                     15
Getting started with Tycho

•   Get Maven 3 Installation
•   Add a pom.xml to each project
•   Bootstrap pom.xml creation:
        mvn 
          org.sonatype.tycho:maven-tycho-plugin:generate-poms 
          -DgroupId=com.siemens.ct.mp3m 
          -Dversion=3.5.1-SNAPSHOT 
          -Dtycho.targetPlatform=<path-to-eclipse>




© itemis AG 2010 – Alle Rechte vorbehalten                        16
pom.xml bootstrapping




© itemis AG 2010 – Alle Rechte vorbehalten         17
Project coordinates

OSGi                                         Maven / Tycho
Bundle-SymbolicName:                         <groupId>com.siemens.ct.mp3m</groupId>
com.siemens.ct.mp3m.model                    <artifactId>mp3m.model</artifactId>


                                             or...


                                             <groupId>com.siemens.ct.mp3m</groupId>
                                             <artifactId>com.siemens.ct.mp3m.model
                                             </artifactId>
Bundle-Version:                              <version>3.5.1-SNAPSHOT</version>
3.5.1.qualifier

Bundle-Version:                              <version>3.5.1</version>
3.5.1.qualifier

© itemis AG 2010 – Alle Rechte vorbehalten                                            18
Packaging: eclipse-plugin




© itemis AG 2010 – Alle Rechte vorbehalten             19
Packaging: eclipse-plugin




© itemis AG 2010 – Alle Rechte vorbehalten             19
Packaging: eclipse-feature




© itemis AG 2010 – Alle Rechte vorbehalten              20
Packaging: eclipse-feature




© itemis AG 2010 – Alle Rechte vorbehalten              20
Packaging: eclipse-update-site




© itemis AG 2010 – Alle Rechte vorbehalten                  21
Packaging: eclipse-application




© itemis AG 2010 – Alle Rechte vorbehalten                  22
Packaging: eclipse-application




© itemis AG 2010 – Alle Rechte vorbehalten                  22
Parent POM

•   Aggregates all projects as modules
•   Common build settings
      • Tycho plugins


      • Other Maven plugins


      • Repositories


      • Target platform

      • Target environments


•   Usually in the directory „above“ the projects
      • This would be the workspace root in Eclipse!




© itemis AG 2010 – Alle Rechte vorbehalten             23
Parent POM




© itemis AG 2010 – Alle Rechte vorbehalten   24
Parent POM




© itemis AG 2010 – Alle Rechte vorbehalten   24
Integration of Tycho
             builds into Hudson


© itemis AG 2010 – Alle Rechte vorbehalten   25
Add Maven 3 Installation




© itemis AG 2010 – Alle Rechte vorbehalten            26
Create Free-Style Job




© itemis AG 2010 – Alle Rechte vorbehalten         27
Create Free-Style Job




© itemis AG 2010 – Alle Rechte vorbehalten         28
Create Free-Style Job




© itemis AG 2010 – Alle Rechte vorbehalten         29
Test drive!




© itemis AG 2010 – Alle Rechte vorbehalten   30
Test drive!




© itemis AG 2010 – Alle Rechte vorbehalten   31
Test drive!




© itemis AG 2010 – Alle Rechte vorbehalten   32
Test drive!




© itemis AG 2010 – Alle Rechte vorbehalten   33
Maven 3


© itemis AG 2010 – Alle Rechte vorbehalten             34
Maven 3

•   Complete rework of Maven 2
•   Current version 3.0-beta-1
      • Really stable already


•   Mostly backward compatible
•   Important projects developed for Maven 3
      • m2eclipse

      • Tycho


      • Maven Shell


      • Polyglot Maven




© itemis AG 2010 – Alle Rechte vorbehalten     35
Maven Shell

•   CLI interface, Wrapper for normal shell
•   Faster turn-around
      • project information always in-memory


      • plugins loaded only once




© itemis AG 2010 – Alle Rechte vorbehalten     36
Maven Shell - Execution Time

•   Apache Commons Lang 2.5
•   Goals: clean package




                                         mvn   mvnsh
© itemis AG 2010 – Alle Rechte vorbehalten                37
Polyglot Maven

•   Multilanguage support for definition of POMs
•   Alternative to XML POM definition
•   Supported languages
      • Groovy


      • Scala


      • JRuby

      • Clojure


•   Xtext external DSL coming up




© itemis AG 2010 – Alle Rechte vorbehalten         38
Polyglot Maven - Original POM




© itemis AG 2010 – Alle Rechte vorbehalten                 39
Polyglot Maven - Groovy




© itemis AG 2010 – Alle Rechte vorbehalten           40
Polyglot Maven - Groovy




© itemis AG 2010 – Alle Rechte vorbehalten           40
Polyglot Maven - Scala




© itemis AG 2010 – Alle Rechte vorbehalten          41
Polyglot Maven - Scala




© itemis AG 2010 – Alle Rechte vorbehalten          41
Polyglot Maven - Ruby




© itemis AG 2010 – Alle Rechte vorbehalten         42
Polyglot Maven - Ruby




© itemis AG 2010 – Alle Rechte vorbehalten         42
Conclusion

•   Maven Tycho can make headless Eclipse Builds easy
•   Still under development
      • Expect some bugs


      • Report them!


      • Rapid improvement through developers


      • Documentation needs to be improved

•   Tycho is likely to be the next generation build framework for
    Eclipse!
•   Don‘t fear upgrading to Maven 3




© itemis AG 2010 – Alle Rechte vorbehalten                          43
Resources

•   Tycho Homepage
        •   http://tycho.sonatype.org/
•   Tycho Eclipse Project Proposal
        •   http://www.eclipse.org/proposals/tycho/
•   Tycho Tutorials
      • http://www.sonatype.com/people/2008/11/building-eclipse-plugins-with-

        maven-tycho/
        •   http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi-
            bundles/
        •   http://eclipse.dzone.com/news/how-build-xulrunner-1912
•   MP3 Manager Example, customized for Tycho
        •   git://github.com/kthoms/mp3m.git



© itemis AG 2010 – Alle Rechte vorbehalten                                        44
Resources

•   Maven 3 compatibility notes
    https://cwiki.apache.org/MAVEN/maven-3x-compatibility-
    notes.html
•   Maven Shell
    http://shell.sonatype.org/
•   Polyglot Maven
    http://polyglot.sonatype.org
    https://docs.sonatype.org/display/PMAVEN/Home
•




© itemis AG 2010 – Alle Rechte vorbehalten                   45
KANBAN-Compact with Matthias Bohlen
              Location: Top of Cologne, Cologne
              Date: September 13th
              Time: 14:00 - 18:00
              Price : 99 €

Topics covered:
- Introduction to Lean, Pull-Systems and Kanban
- Examples and Casestudies
- Kanban recipe for success: The ingredients
- How to start with Kanban
- How to be more productive with Kanban
- How Kanban and Scrum fit together
           Further Informations and Registration:

           www.itemis.de/Veranstaltungen

© itemis AG 2010 – Alle Rechte vorbehalten          46

More Related Content

Maven 3 / Tycho

  • 1. Maven 3 / Tycho Eclipse and Maven coexisting in harmony Karsten Thoms 2010-05-10 © itemis AG 2010 – Alle Rechte vorbehalten 1
  • 2. About me • Working as consultant for itemis • Over 10 years experience in Enterprise Java, Model Driven Software Development • Open Source enthusiast, MDSD evangelist • Project (co-)lead: The Fornax Platform, fit4oaw, Hybridlabs Beautifier • Committer / Contributor: Eclipse EMFT MWE, M2T Xpand, openArchitectureWare, Fornax Maven plugin for oAW/MWE, Fornax UML2 cartridges for oAW, AUTOSAR Tool Platform (ARTOP) • Using Maven in my Open Source projects and some customer projects © itemis AG 2010 – Alle Rechte vorbehalten 2
  • 3. Maven Tycho © itemis AG 2010 – Alle Rechte vorbehalten 3
  • 4. Example used for Tycho demo • MP3 Manager • RCP Example from Kai Tödter • http://max-server.myftp.org/trac/mp3m © itemis AG 2010 – Alle Rechte vorbehalten 4
  • 5. Example RCP Application • Project types in this application • Plugins • Features • Update Site • Products • Product come with different brandings: blue, orange, german • Build Target: • Create ZIP distributions for branded products © itemis AG 2010 – Alle Rechte vorbehalten 5
  • 6. Automated Build for Eclipse/OSGi • Several frameworks serving this task • PDE Build • Buckminster • Pluginbuilder • b3 • Athena Common Build Infrastructure • Often hard to setup, maintain and debug a working headless build • P2 makes some things better and many worse © itemis AG 2010 – Alle Rechte vorbehalten 6
  • 7. Tycho • Maven extensions for Eclipse / OSGi • Seamless build for Eclipse artifacts • Plugins, Plugin-Tests, Features, Update Sites, Products • Manifest-first approach • POM needed for each module, but minimal one • Tight integration with Equinox / P2 • Proposed as project under the Eclipse Technology project in April 2010 © itemis AG 2010 – Alle Rechte vorbehalten 7
  • 8. Eclipse project structure © itemis AG 2010 – Alle Rechte vorbehalten 8
  • 9. Maven project structure © itemis AG 2010 – Alle Rechte vorbehalten 9
  • 10. Packaging extensions • Target artifact type is specified with <packaging> element in pom.xml • Standard packaging types: • pom - jar • war - ear • ... • Tycho adds Eclipse specific packaging types • eclipse-plugin - eclipse-test-plugin • eclipse-feature - eclipse-update-site • eclipse-application © itemis AG 2010 – Alle Rechte vorbehalten 10
  • 11. Target Platform • Set of plugins and features, against which modules/ projects are built • Computed seperately for each module • Configurable via • System property -Dtycho.targetPlatform=<eclipsehome> • Repositories in POM with <layout>p2</layout> • Target Platform Definition file (.target) stored in a Maven repository © itemis AG 2010 – Alle Rechte vorbehalten 11
  • 12. Target Platform - Repositories <repositories> <repository> <id>galileo</id> <layout>p2</layout> <url>http://download.eclipse.org/ releases/galileo</url> </repository> <repository>... </repository> </repositories> © itemis AG 2010 – Alle Rechte vorbehalten 12
  • 13. Repositories P2 Repository Maven2 Repository © itemis AG 2010 – Alle Rechte vorbehalten 13
  • 14. Creating a P2 Repository with Equinox FeaturesAndBundlesPublisher © itemis AG 2010 – Alle Rechte vorbehalten 14
  • 15. Creating a P2 Repository with Equinox FeaturesAndBundlesPublisher © itemis AG 2010 – Alle Rechte vorbehalten 15
  • 16. Getting started with Tycho • Get Maven 3 Installation • Add a pom.xml to each project • Bootstrap pom.xml creation: mvn org.sonatype.tycho:maven-tycho-plugin:generate-poms -DgroupId=com.siemens.ct.mp3m -Dversion=3.5.1-SNAPSHOT -Dtycho.targetPlatform=<path-to-eclipse> © itemis AG 2010 – Alle Rechte vorbehalten 16
  • 17. pom.xml bootstrapping © itemis AG 2010 – Alle Rechte vorbehalten 17
  • 18. Project coordinates OSGi Maven / Tycho Bundle-SymbolicName: <groupId>com.siemens.ct.mp3m</groupId> com.siemens.ct.mp3m.model <artifactId>mp3m.model</artifactId> or... <groupId>com.siemens.ct.mp3m</groupId> <artifactId>com.siemens.ct.mp3m.model </artifactId> Bundle-Version: <version>3.5.1-SNAPSHOT</version> 3.5.1.qualifier Bundle-Version: <version>3.5.1</version> 3.5.1.qualifier © itemis AG 2010 – Alle Rechte vorbehalten 18
  • 19. Packaging: eclipse-plugin © itemis AG 2010 – Alle Rechte vorbehalten 19
  • 20. Packaging: eclipse-plugin © itemis AG 2010 – Alle Rechte vorbehalten 19
  • 21. Packaging: eclipse-feature © itemis AG 2010 – Alle Rechte vorbehalten 20
  • 22. Packaging: eclipse-feature © itemis AG 2010 – Alle Rechte vorbehalten 20
  • 23. Packaging: eclipse-update-site © itemis AG 2010 – Alle Rechte vorbehalten 21
  • 24. Packaging: eclipse-application © itemis AG 2010 – Alle Rechte vorbehalten 22
  • 25. Packaging: eclipse-application © itemis AG 2010 – Alle Rechte vorbehalten 22
  • 26. Parent POM • Aggregates all projects as modules • Common build settings • Tycho plugins • Other Maven plugins • Repositories • Target platform • Target environments • Usually in the directory „above“ the projects • This would be the workspace root in Eclipse! © itemis AG 2010 – Alle Rechte vorbehalten 23
  • 27. Parent POM © itemis AG 2010 – Alle Rechte vorbehalten 24
  • 28. Parent POM © itemis AG 2010 – Alle Rechte vorbehalten 24
  • 29. Integration of Tycho builds into Hudson © itemis AG 2010 – Alle Rechte vorbehalten 25
  • 30. Add Maven 3 Installation © itemis AG 2010 – Alle Rechte vorbehalten 26
  • 31. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 27
  • 32. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 28
  • 33. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 29
  • 34. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 30
  • 35. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 31
  • 36. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 32
  • 37. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 33
  • 38. Maven 3 © itemis AG 2010 – Alle Rechte vorbehalten 34
  • 39. Maven 3 • Complete rework of Maven 2 • Current version 3.0-beta-1 • Really stable already • Mostly backward compatible • Important projects developed for Maven 3 • m2eclipse • Tycho • Maven Shell • Polyglot Maven © itemis AG 2010 – Alle Rechte vorbehalten 35
  • 40. Maven Shell • CLI interface, Wrapper for normal shell • Faster turn-around • project information always in-memory • plugins loaded only once © itemis AG 2010 – Alle Rechte vorbehalten 36
  • 41. Maven Shell - Execution Time • Apache Commons Lang 2.5 • Goals: clean package mvn mvnsh © itemis AG 2010 – Alle Rechte vorbehalten 37
  • 42. Polyglot Maven • Multilanguage support for definition of POMs • Alternative to XML POM definition • Supported languages • Groovy • Scala • JRuby • Clojure • Xtext external DSL coming up © itemis AG 2010 – Alle Rechte vorbehalten 38
  • 43. Polyglot Maven - Original POM © itemis AG 2010 – Alle Rechte vorbehalten 39
  • 44. Polyglot Maven - Groovy © itemis AG 2010 – Alle Rechte vorbehalten 40
  • 45. Polyglot Maven - Groovy © itemis AG 2010 – Alle Rechte vorbehalten 40
  • 46. Polyglot Maven - Scala © itemis AG 2010 – Alle Rechte vorbehalten 41
  • 47. Polyglot Maven - Scala © itemis AG 2010 – Alle Rechte vorbehalten 41
  • 48. Polyglot Maven - Ruby © itemis AG 2010 – Alle Rechte vorbehalten 42
  • 49. Polyglot Maven - Ruby © itemis AG 2010 – Alle Rechte vorbehalten 42
  • 50. Conclusion • Maven Tycho can make headless Eclipse Builds easy • Still under development • Expect some bugs • Report them! • Rapid improvement through developers • Documentation needs to be improved • Tycho is likely to be the next generation build framework for Eclipse! • Don‘t fear upgrading to Maven 3 © itemis AG 2010 – Alle Rechte vorbehalten 43
  • 51. Resources • Tycho Homepage • http://tycho.sonatype.org/ • Tycho Eclipse Project Proposal • http://www.eclipse.org/proposals/tycho/ • Tycho Tutorials • http://www.sonatype.com/people/2008/11/building-eclipse-plugins-with- maven-tycho/ • http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi- bundles/ • http://eclipse.dzone.com/news/how-build-xulrunner-1912 • MP3 Manager Example, customized for Tycho • git://github.com/kthoms/mp3m.git © itemis AG 2010 – Alle Rechte vorbehalten 44
  • 52. Resources • Maven 3 compatibility notes https://cwiki.apache.org/MAVEN/maven-3x-compatibility- notes.html • Maven Shell http://shell.sonatype.org/ • Polyglot Maven http://polyglot.sonatype.org https://docs.sonatype.org/display/PMAVEN/Home • © itemis AG 2010 – Alle Rechte vorbehalten 45
  • 53. KANBAN-Compact with Matthias Bohlen Location: Top of Cologne, Cologne Date: September 13th Time: 14:00 - 18:00 Price : 99 € Topics covered: - Introduction to Lean, Pull-Systems and Kanban - Examples and Casestudies - Kanban recipe for success: The ingredients - How to start with Kanban - How to be more productive with Kanban - How Kanban and Scrum fit together Further Informations and Registration: www.itemis.de/Veranstaltungen © itemis AG 2010 – Alle Rechte vorbehalten 46