Maven 3 / Tycho
Eclipse and Maven coexisting in harmony

 Karsten Thoms
 2010-05-10


© itemis AG 2010 – Alle Rechte vorbe...
About me

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

   Driven Software De...
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/m...
Example RCP Application

•   Project types in this application
      • Plugins

      • Features


      • Update Site


 ...
Automated Build for Eclipse/OSGi

•   Several frameworks serving this task
      • PDE Build

      • Buckminster


      ...
Tycho

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

        •
            Plugins, Plugin...
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 ty...
Target Platform

• Set of plugins and features, against which modules/
  projects are built
• Computed seperately for each...
Target Platform - Repositories

    <repositories>
        <repository>
            <id>galileo</id>
           <layout>p2...
Repositories

P2 Repository                                 Maven2 Repository




 © itemis AG 2010 – Alle Rechte vorbehal...
Creating a P2 Repository with Equinox
                           FeaturesAndBundlesPublisher




© itemis AG 2010 – Alle R...
Creating a P2 Repository with Equinox
                           FeaturesAndBundlesPublisher




© itemis AG 2010 – Alle R...
Getting started with Tycho

•   Get Maven 3 Installation
•   Add a pom.xml to each project
•   Bootstrap pom.xml creation:...
pom.xml bootstrapping




© itemis AG 2010 – Alle Rechte vorbehalten         17
Project coordinates

OSGi                                         Maven / Tycho
Bundle-SymbolicName:                      ...
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 p...
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...
Maven Shell

•   CLI interface, Wrapper for normal shell
•   Faster turn-around
      • project information always in-memo...
Maven Shell - Execution Time

•   Apache Commons Lang 2.5
•   Goals: clean package




                                   ...
Polyglot Maven

•   Multilanguage support for definition of POMs
•   Alternative to XML POM definition
•   Supported langu...
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


 ...
Resources

•   Tycho Homepage
        •   http://tycho.sonatype.org/
•   Tycho Eclipse Project Proposal
        •   http:/...
Resources

•   Maven 3 compatibility notes
    https://cwiki.apache.org/MAVEN/maven-3x-compatibility-
    notes.html
•   M...
KANBAN-Compact with Matthias Bohlen
              Location: Top of Cologne, Cologne
              Date: September 13th
   ...
Upcoming SlideShare
Loading in...5
×

Maven 3 / Tycho

15,433

Published on

The Tycho project aims to enable Maven to build Eclipse based artifacts (plugins, features, update sites, products). This presentation was held at a public event from itemis in Dortmund, showing how Tycho is used and some news to the upcoming Maven 3 release.

Published in: Technology
1 Comment
10 Likes
Statistics
Notes
No Downloads
Views
Total Views
15,433
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
384
Comments
1
Likes
10
Embeds 0
No embeds

No notes for slide

Maven 3 / Tycho

  1. 1. Maven 3 / Tycho Eclipse and Maven coexisting in harmony Karsten Thoms 2010-05-10 © itemis AG 2010 – Alle Rechte vorbehalten 1
  2. 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. 3. Maven Tycho © itemis AG 2010 – Alle Rechte vorbehalten 3
  4. 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. 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. 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. 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. 8. Eclipse project structure © itemis AG 2010 – Alle Rechte vorbehalten 8
  9. 9. Maven project structure © itemis AG 2010 – Alle Rechte vorbehalten 9
  10. 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. 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. 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. 13. Repositories P2 Repository Maven2 Repository © itemis AG 2010 – Alle Rechte vorbehalten 13
  14. 14. Creating a P2 Repository with Equinox FeaturesAndBundlesPublisher © itemis AG 2010 – Alle Rechte vorbehalten 14
  15. 15. Creating a P2 Repository with Equinox FeaturesAndBundlesPublisher © itemis AG 2010 – Alle Rechte vorbehalten 15
  16. 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. 17. pom.xml bootstrapping © itemis AG 2010 – Alle Rechte vorbehalten 17
  18. 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. 19. Packaging: eclipse-plugin © itemis AG 2010 – Alle Rechte vorbehalten 19
  20. 20. Packaging: eclipse-plugin © itemis AG 2010 – Alle Rechte vorbehalten 19
  21. 21. Packaging: eclipse-feature © itemis AG 2010 – Alle Rechte vorbehalten 20
  22. 22. Packaging: eclipse-feature © itemis AG 2010 – Alle Rechte vorbehalten 20
  23. 23. Packaging: eclipse-update-site © itemis AG 2010 – Alle Rechte vorbehalten 21
  24. 24. Packaging: eclipse-application © itemis AG 2010 – Alle Rechte vorbehalten 22
  25. 25. Packaging: eclipse-application © itemis AG 2010 – Alle Rechte vorbehalten 22
  26. 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. 27. Parent POM © itemis AG 2010 – Alle Rechte vorbehalten 24
  28. 28. Parent POM © itemis AG 2010 – Alle Rechte vorbehalten 24
  29. 29. Integration of Tycho builds into Hudson © itemis AG 2010 – Alle Rechte vorbehalten 25
  30. 30. Add Maven 3 Installation © itemis AG 2010 – Alle Rechte vorbehalten 26
  31. 31. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 27
  32. 32. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 28
  33. 33. Create Free-Style Job © itemis AG 2010 – Alle Rechte vorbehalten 29
  34. 34. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 30
  35. 35. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 31
  36. 36. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 32
  37. 37. Test drive! © itemis AG 2010 – Alle Rechte vorbehalten 33
  38. 38. Maven 3 © itemis AG 2010 – Alle Rechte vorbehalten 34
  39. 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. 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. 41. Maven Shell - Execution Time • Apache Commons Lang 2.5 • Goals: clean package mvn mvnsh © itemis AG 2010 – Alle Rechte vorbehalten 37
  42. 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. 43. Polyglot Maven - Original POM © itemis AG 2010 – Alle Rechte vorbehalten 39
  44. 44. Polyglot Maven - Groovy © itemis AG 2010 – Alle Rechte vorbehalten 40
  45. 45. Polyglot Maven - Groovy © itemis AG 2010 – Alle Rechte vorbehalten 40
  46. 46. Polyglot Maven - Scala © itemis AG 2010 – Alle Rechte vorbehalten 41
  47. 47. Polyglot Maven - Scala © itemis AG 2010 – Alle Rechte vorbehalten 41
  48. 48. Polyglot Maven - Ruby © itemis AG 2010 – Alle Rechte vorbehalten 42
  49. 49. Polyglot Maven - Ruby © itemis AG 2010 – Alle Rechte vorbehalten 42
  50. 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. 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. 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. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×