Tycho project overview

(copy&paste from http://www.nabble.com/Re%3A-Fwd%3A-tycho---the-future-p19076725.html)

Ultimately, we want Tycho to be one-stop solution for doing Eclipse and OSGi development with Maven 2 (actually, 3, more on this later). We believe there are two distinct development workflows that we want to support:

  • developer explicitly creates and maintains OSGi manifest and other Eclipse/OSGi metadata (we call it "manifest-first")
  • OSGi metadata is generated by the build based on information available from pom.xml ("pom-first", naturally).

manifest-first mode

In manifest-first mode, Tycho will use Eclipse/OSGi metadata and OSGi rules to calculate project dependencies dynamically, at build time. It will support all attributes supported by Eclipse OSGi resolver (Require-Bundle, Import-Package, Eclipse-GenericRequire, etc). It will use proper classpath access rules during compilation. It will support all projects supported by PDE and will use PDE/JDT project metadata where applicable. One important design goal is to make sure there is no duplication of metadata between pom.xml files and Eclipse/OSGi config files. In fact, Tycho will support "pom-less" projects, where all required build metadata is derived from Eclipse/OSGi config files.

pom-first mode

In pom-first mode current plan is to provide similar set of features as in felix/bnd plugin, although I do not know if we'll be able to share any of the code. Additionally, Tycho will support Eclipse-friendlier Require-Bundle and will provide better support for developing multiple related OSGi bundles (I have not checked recently, so felix/bnd may already support these).

Remote repositories

In both modes Tycho will support remote repositories both as source and sink for artifacts. We plan to support maven repositories, p2 and update sites, although level of support will likely vary. There will also be integration between m2e, Tycho and PDE to make the three work nicely together.

Currently supported features

Now to what Tycho is already able to do. Our first goal was to enable m2e continues build, so we started with manifest-first mode and I believe covered most of manifest-first features described above. Tycho already uses Eclipse/OSGi metadata to resolve project dependencies by OSGi rules and injects these dependencies into maven project model dynamically, at build time. It supports bundle, fragment, feature and update site projects (shame on me, but no RCP application yet). It knows how to run junit test plugins using OSGi runtime. Two big features that are still missing, are support for pom-less projects and work with artifact repositories, although there is prototype of target platform materialization from p2 repository already. There is also some rudimentary implementation of pom-first mode, but its usability outside of m2e build context is probably limited. Many smaller features are still missing and there are quite a few bugs too, but overall Tycho code is in reasonably good shape already.

Few words about relationship between Maven and Tycho. Tycho is not morphing into Maven, but it provides Maven extensions and plugins that enable Maven to work with Eclipse/OSGi projects. Some of Tycho functionality, especially OSGi dependency injection, relies on Maven features only available in Maven 3.0 which was very recently renamed from 2.1. Since there is no Maven 3.0 release yet, current Tycho distribution includes complete copy of maven 3.0-SNAPSHOT.

Please visit Tycho for new users page to get started with Tycho.

Labels

tycho tycho Delete
eclipse eclipse Delete
maven maven Delete
m2eclipse m2eclipse Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.