Tycho promises to merge the world of osgi/p2 with Maven apparently making it dead easy to build plugins.
The JBoss Tools and Developer Studio team moved to Tycho last year and with 350+ plugins we learned a lot about what Tycho can do and not do.
In this talk I will update on the Good, bad and ugly experiences we had and continue to have and discuss our recommendations on how to and how not use Tycho.
Slides from version given at EclipseCon 2012.
Recording available from EclipseCon Europe 2011 : http://www.fosslc.org/drupal/content/tycho-good-bad-and-ugly
6. •45 modules
•~8 year old •222 plugins
•PDE Ant Build •76 features
•36 test features
•154 test plugins
7. •45 modules
•~8 year old •222 plugins
•PDE Ant Build •76 features
•36 test features
•154 test plugins
a.k.a. The “Big Ass” Project that moved
to Tycho
8. PDE/Ant Build
common plugins .core
.ui
...
features .feature
.source.fe
ature
...
tests .tests
...
site
9. PDE/Tycho
common plugins .core
.ui
...
features .feature
.source.fe
ature
...
tests .tests
...
site
10. PDE/Tycho
common plugins .core <?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
.ui
<parent>
<groupId>org.jboss.tools.common</groupId>
... <artifactId>plugins</artifactId>
<version>3.3.0-SNAPSHOT</version>
</parent>
features .feature
<groupId>org.jboss.tools.common.plugins</groupId>
.source.fe <artifactId>org.jboss.tools.common</artifactId>
ature <packaging>eclipse-plugin</packaging>
</project>
...
tests .tests
...
site
12. common plugins .core
”Big Ass”
.ui
...
features .feature
.source.fe
ature
...
tests .tests
...
site
13. common plugins .core
hibernate CDI
”Big Ass”
plugins .core JSF plugins .core
... plugins .core ... plugins .core
plugins .core seam plugins .core
.ui
.ui .ui .ui .ui
.ui .ui
...
... ...
... ...
features .feature
... ...
.source.fe features .feature features .feature
ature
features .feature features .feature features .feature
features .feature
... .source.fe
ature .source.fe
ature
.source.fe .source.fe .source.fe
tests .tests .source.fe ature ature ature
... ature
...
...
... ... ...
tests .tests
site ...
tests .tests
... tests .tests
tests .tests tests .tests
tests .tests ...
site
...
site ... ...
...
site
site site
site
... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core
.ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui
... ... ... ... ... ... ... ... ... ... ... ...
features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature
.source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe
ature ature ature ature ature ature ature ature ature ature ature ature
... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core
... ... ... ... ... ... ... ... ... ... ... ...
.ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui
tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests
... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ...
features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature
site site site site site site site site site site site site
.source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe
ature ature ature ature ature ature ature ature ature ature ature ature
... ... ... ... ... ... ... ... ... ... ... ...
tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests
... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core ... plugins .core
... ... ... ... ... ... ... ... ... ... ... ...
.ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui .ui
site site site site site site site site site site site site
... ... ... ... ... ... ... ... ... ... ... ...
features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature features .feature
.source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe .source.fe
ature ature ature ature ature ature ature ature ature ature ature ature
... ... ... ... ... ... ... ... ... ... ... ...
tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests tests .tests
... ... ... ... ... ... ... ... ... ... ... ...
site site site site site site site site site site site site
14. General Layout
common plugins .core
.ui
...
features .feature
.source.fe
ature
...
tests .tests
...
site
15. General Layout
common plugins .core
•module is a “releasable unit”
.ui
...
features .feature
.source.fe
ature
...
tests .tests
...
site
16. General Layout
common plugins .core
•module is a “releasable unit”
.ui
•pom.xml at each level
...
features .feature
.source.fe
ature
...
tests .tests
...
site
17. General Layout
common plugins .core
•module is a “releasable unit”
.ui
•pom.xml at each level
... •allows to build subparts very
features .feature
easily
.source.fe
ature
...
tests .tests
...
site
18. General Layout
common plugins .core
•module is a “releasable unit”
.ui
•pom.xml at each level
... •allows to build subparts very
features .feature
easily
.source.fe
•separate customization for
ature
modules
...
tests .tests
...
site
19. General Layout
common plugins .core
•module is a “releasable unit”
.ui
•pom.xml at each level
... •allows to build subparts very
features .feature
easily
.source.fe
•separate customization for
ature
modules
•Can use mvn version per module
...
tests .tests
...
site
32. Plugin A
Require-Bundle:
Z [1.2;2.0]
Plugin B
Plugin C
Require-Bundle: Z
[1.7;2.0]
Source
~/.m2/repository
33. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0]
Plugin Q 1.2.1
Plugin B
Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source
~/.m2/repository
34. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0]
Plugin Q 1.2.1
Plugin B
Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source
Plugin Z 1.8
~/.m2/repository
35. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0]
Plugin Q 1.2.1
Plugin B
Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source Plugin B
1.2.3
Plugin C Plugin Z 1.8
1.2.3
Plugin A
1.2.3
~/.m2/repository
36. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0] Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin B
Target Definition Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source
~/.m2/repository
37. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0] Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin B
Target Definition Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source Plugin Z 1.7
Plugin Q 1.2.1
~/.m2/repository
38. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0] Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin B
Target Definition Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source Plugin B
Plugin Z 1.7
1.2.3
Plugin C
1.2.3
Plugin A
Plugin Q 1.2.1
1.2.3
~/.m2/repository
39. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0] Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin B
Target Definition Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source Plugin B
Plugin Z 1.7
1.2.3
Plugin C
1.2.3
Plugin A
Plugin Q 1.2.1
1.2.3
~/.m2/repository
40. Plugin A p2 repositories
Require-Bundle:
Z [1.2;2.0] Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin B
Target Definition Plugin Z 1.7
Plugin Z 1.8
Plugin C
Require-Bundle: Z
[1.7;2.0] Plugin Z 2.0
Source Plugin B
Plugin Z 1.7
1.2.3
Plugin C Plugin B
1.2.3 1.2.3
Plugin A
Plugin Q 1.2.1
1.2.3 Plugin A
1.2.3
~/.m2/repository
41. p2 repositories
Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin C
Target Definition Plugin Z 1.7
Require-Bundle: Z Plugin Z 1.8
[1.7;2.0]
B Plugin Z 2.0
Source
Plugin B
1.2.3
Plugin A
1.2.3
~/.m2/repository
42. p2 repositories
Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin C
Target Definition Plugin Z 1.7
Require-Bundle: Z Plugin Z 1.8
[1.7;2.0]
B Plugin Z 2.0
Source Plugin B
Plugin Z 1.7
1.2.3 Plugin B
1.2.3
Plugin Q 1.2.1
Plugin A
1.2.3
~/.m2/repository
43. p2 repositories
Plugin Z 1.7
Plugin Q
Plugin Q 1.2.1
Plugin C
Target Definition Plugin Z 1.7
Require-Bundle: Z Plugin Z 1.8
[1.7;2.0]
B Plugin Z 2.0
Source Plugin B
Plugin Z 1.7
1.2.3 Plugin B
1.2.3
Plugin C Plugin Q 1.2.1
1.2.3 Plugin A
1.2.3
~/.m2/repository
56. Source Features
common plugins .core artifacts.jar
content.jar
.ui
features/org.jboss.tools.forge.feature_1.0.0.v20120327-0403-Beta3.jar
...
features/org.jboss.tools.forge.test.feature_1.0.0.v20120327-0403-Beta3.jar
features .feature
.source.fe plugins/org.jboss.tools.forge.core.test_1.0.0.v20120327-0403-Beta3.jar
ature
plugins/org.jboss.tools.forge.core_1.0.0.v20120327-0403-Beta3.jar
...
plugins/org.jboss.tools.forge.runtime.ext_1.0.0.v20120327-0403-Beta3.jar
tests .tests
plugins/org.jboss.tools.forge.runtime_1.0.0.v20120327-0403-Beta3.jar
...
site
plugins/org.jboss.tools.forge.ui.test_1.0.0.v20120327-0403-Beta3.jar
plugins/org.jboss.tools.forge.ui_1.0.0.v20120327-0403-Beta3.jar
57. Source Features
common plugins .core artifacts.jar
content.jar
.ui features/org.jboss.tools.forge.feature.source_1.0.0.v20120327-0403-Beta3.jar
features/org.jboss.tools.forge.feature_1.0.0.v20120327-0403-Beta3.jar
... features/org.jboss.tools.forge.test.feature.source_1.0.0.v20120327-0403-Beta3.
features/org.jboss.tools.forge.test.feature_1.0.0.v20120327-0403-Beta3.jar
features .feature
plugins/org.jboss.tools.forge.core.source_1.0.0.v20120327-0403-Beta3.jar
plugins/org.jboss.tools.forge.core.test.source_1.0.0.v20120327-0403-Beta3.jar
.source.fe plugins/org.jboss.tools.forge.core.test_1.0.0.v20120327-0403-Beta3.jar
ature
plugins/org.jboss.tools.forge.core_1.0.0.v20120327-0403-Beta3.jar
...
plugins/org.jboss.tools.forge.runtime.ext.source_1.0.0.v20120327-0403-Beta3.ja
plugins/org.jboss.tools.forge.runtime.ext_1.0.0.v20120327-0403-Beta3.jar
tests .tests
plugins/org.jboss.tools.forge.runtime.source_1.0.0.v20120327-0403-Beta3.jar
plugins/org.jboss.tools.forge.runtime_1.0.0.v20120327-0403-Beta3.jar
plugins/org.jboss.tools.forge.ui.source_1.0.0.v20120327-0403-Beta3.jar
...
plugins/org.jboss.tools.forge.ui.test.source_1.0.0.v20120327-0403-Beta3.jar
site
plugins/org.jboss.tools.forge.ui.test_1.0.0.v20120327-0403-Beta3.jar
plugins/org.jboss.tools.forge.ui_1.0.0.v20120327-0403-Beta3.jar
58.
59. Concise, Large Ecosystem, improving,
growing, versatile, responsive
community, Just Works
Has had some nasty bugs - but they are
fixed (0.13/0.14+)
Need to understand
Maven + OSGi + p2 (Speed?)
I&#x2019;m here to talk about the good, bad and ugly sides of Tycho.\nMy name is Max Andersen I work for Red Hat and I work on the project named...\n
I&#x2019;m here to talk about the good, bad and ugly sides of Tycho.\nMy name is Max Andersen I work for Red Hat and I work on the project named...\n
...JBoss Tools. JBoss Tools is a set of plugins which focus on JBoss and related technology to make development experience around JBoss better. Tech such as AS it self, JSF, CDI, Seam, Birt, Maven etc. and we are in the top on eclipse market place for usage.\n
Which means we are used all around the world - these are showing the last 3 months &#x201C;pings&#x201D; to our usage plugin showing the distribution of a million startups. One of my favorite slides :)\n
But i&#x2019;m here to talk about jboss tools in context of builds - and we are an old project, almost as old as eclipse it self and we&#x2019;ve seen all the various build techs come and go but until Tycho came around we stayed with PDE ant build. Our project is rather big - a lot of modules, plugins and features whick makes us a.ka. the Big Ass project that moved to Tycho\n
But i&#x2019;m here to talk about jboss tools in context of builds - and we are an old project, almost as old as eclipse it self and we&#x2019;ve seen all the various build techs come and go but until Tycho came around we stayed with PDE ant build. Our project is rather big - a lot of modules, plugins and features whick makes us a.ka. the Big Ass project that moved to Tycho\n
But i&#x2019;m here to talk about jboss tools in context of builds - and we are an old project, almost as old as eclipse it self and we&#x2019;ve seen all the various build techs come and go but until Tycho came around we stayed with PDE ant build. Our project is rather big - a lot of modules, plugins and features whick makes us a.ka. the Big Ass project that moved to Tycho\n
So lets take a look at how our module(s) looked like when we used PDE/Ant Build. We had a root for each module, under here plugins/features/tests and site with their respective bundles/plugins/content. So what happens with this when moving to Tycho...?\n
..absolutely nothing. And this is the reason why Tycho was able to get us off PDE ant build! Thank you! Of course we did have to add a pom.xml here and there...\n
..actually everywhere ;) each level in that structure has a pom.xml but thankfully they are for most very concise. You simply just state the GAV (group,artifact,version) for you artifact and then the packaging. in this case it is eclipse-plugin but <click> there is also a packaging for every other important eclipse packaging. Great stuff! This structure is our general layout..\n
..actually everywhere ;) each level in that structure has a pom.xml but thankfully they are for most very concise. You simply just state the GAV (group,artifact,version) for you artifact and then the packaging. in this case it is eclipse-plugin but <click> there is also a packaging for every other important eclipse packaging. Great stuff! This structure is our general layout..\n
..actually everywhere ;) each level in that structure has a pom.xml but thankfully they are for most very concise. You simply just state the GAV (group,artifact,version) for you artifact and then the packaging. in this case it is eclipse-plugin but <click> there is also a packaging for every other important eclipse packaging. Great stuff! This structure is our general layout..\n
..actually everywhere ;) each level in that structure has a pom.xml but thankfully they are for most very concise. You simply just state the GAV (group,artifact,version) for you artifact and then the packaging. in this case it is eclipse-plugin but <click> there is also a packaging for every other important eclipse packaging. Great stuff! This structure is our general layout..\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
..and is used with everyone of our modules ...and <click> ...there is alot of them. and when I say Alot I mean alot. I didn&#x2019;t call it Big Ass for nothing.\n
...this general layout which I actually don&#x2019;t know from where we got it actually turned out to be pretty good for us. It allows us to <click> think about each module as a releasable unit (we don&#x2019;t use that alot yet, but for build setup its very nice). A downside is the extra pom&#x2019;s at each level but the great thing is that it allow us to <click> build subparts very easily and something we hadn&#x2019;t thought about upfront was that it actually gave a nice natural place for modules to <click> customize their testing setup if need be or if a module had special needs compared to what is defined in the maven parent. And something that I&#x2019;ve learned to love <click> is that because there now is a structure defined across the whole module we can use mvn tools such as mvn version plugins to manage all this stuff. Something that pde ant never did.\n
...this general layout which I actually don&#x2019;t know from where we got it actually turned out to be pretty good for us. It allows us to <click> think about each module as a releasable unit (we don&#x2019;t use that alot yet, but for build setup its very nice). A downside is the extra pom&#x2019;s at each level but the great thing is that it allow us to <click> build subparts very easily and something we hadn&#x2019;t thought about upfront was that it actually gave a nice natural place for modules to <click> customize their testing setup if need be or if a module had special needs compared to what is defined in the maven parent. And something that I&#x2019;ve learned to love <click> is that because there now is a structure defined across the whole module we can use mvn tools such as mvn version plugins to manage all this stuff. Something that pde ant never did.\n
...this general layout which I actually don&#x2019;t know from where we got it actually turned out to be pretty good for us. It allows us to <click> think about each module as a releasable unit (we don&#x2019;t use that alot yet, but for build setup its very nice). A downside is the extra pom&#x2019;s at each level but the great thing is that it allow us to <click> build subparts very easily and something we hadn&#x2019;t thought about upfront was that it actually gave a nice natural place for modules to <click> customize their testing setup if need be or if a module had special needs compared to what is defined in the maven parent. And something that I&#x2019;ve learned to love <click> is that because there now is a structure defined across the whole module we can use mvn tools such as mvn version plugins to manage all this stuff. Something that pde ant never did.\n
...this general layout which I actually don&#x2019;t know from where we got it actually turned out to be pretty good for us. It allows us to <click> think about each module as a releasable unit (we don&#x2019;t use that alot yet, but for build setup its very nice). A downside is the extra pom&#x2019;s at each level but the great thing is that it allow us to <click> build subparts very easily and something we hadn&#x2019;t thought about upfront was that it actually gave a nice natural place for modules to <click> customize their testing setup if need be or if a module had special needs compared to what is defined in the maven parent. And something that I&#x2019;ve learned to love <click> is that because there now is a structure defined across the whole module we can use mvn tools such as mvn version plugins to manage all this stuff. Something that pde ant never did.\n
...this general layout which I actually don&#x2019;t know from where we got it actually turned out to be pretty good for us. It allows us to <click> think about each module as a releasable unit (we don&#x2019;t use that alot yet, but for build setup its very nice). A downside is the extra pom&#x2019;s at each level but the great thing is that it allow us to <click> build subparts very easily and something we hadn&#x2019;t thought about upfront was that it actually gave a nice natural place for modules to <click> customize their testing setup if need be or if a module had special needs compared to what is defined in the maven parent. And something that I&#x2019;ve learned to love <click> is that because there now is a structure defined across the whole module we can use mvn tools such as mvn version plugins to manage all this stuff. Something that pde ant never did.\n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...so to explain this here you see the layout for one of our modules - this time with versions - in this setup everything is all over the map, something some project is ok with others not so much since they release the whole module not individual parts of it. So lets try use the mvn version plugin on this stuff. <click> We start by wanting to bump 2.0.1 to 2.0.2&#x2026; \n
...mvn tycho will now go through all the pom&#x2019;s/manifest/feature etc. where it can safely do the bump and you end up with something like this&#x2026;.still alot of manual maintanence and for many of our plugins alot of manual tweaking.\n
..thus we&#x2019;ve made it so we just have the version listed in the top module root and now <click> when we bump versions with tycho it actually bumps them all.\n
...it might be hard for you guys to appreciate the impact of this but we have over 645 versionable artifact (for good and some bad reasons) and having this kind of automation is awesome.\n
...some don&#x2019;t like this approach and here I just have to point out that you can of course if you project needs it have parts of your module that is versioned very strictly and still benefit from this on the artifacts where the version is more tied to the overall release.<click>\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
to sum up - the fact we moved to tycho gave us maven, which despite its reputation actually does provide great value to us because its possible to have tools work on the more powerful project model it provides over plain PDE build setups. Beyond the easy update of versions in all these artifacts - the fact I don&#x2019;t have to see us repeat our self with respect to versions makes me happy...and remember version plugin is just one of them. code coverage, sonar, build setup etc. is others - I just took this one since its a not well knwon feature of tycho.\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
Another aspect of tycho is the whole &#x201C;getting and resolving dependencies mechanism&#x201D;. something that you in PDE had to do manually and in many time machine specific ways. With tycho you have your source and since it uses mvn an .m2 repository local on disk. Here the build will fail because of the missing Plugin Z - and thus you <click> would go and add a p2 repository (or more) to your build. Now with that repository available tycho can create an implicit target platform by getting the missing Z from the repo and then <click> build A,B and C. Easy stuff - but what if what you actually wanted was Plugin Z 1.7 ? what happens if you p2 repo gets a new 1.9 version ? Your build will be affected by it!\n
...to help on that Tycho supports target definitions - here I can specify the Z plugin specific version and I can even add other plugins to the target platform which might not be explicitly needed by the plugin but might be relevant for actually running tests for this build. Same approach again <click> tycho gets the plugin Z but now uses 1.7 and it also grabs the Q to do the build and after that <click> Tycho can again build A,B and C.\n
...to help on that Tycho supports target definitions - here I can specify the Z plugin specific version and I can even add other plugins to the target platform which might not be explicitly needed by the plugin but might be relevant for actually running tests for this build. Same approach again <click> tycho gets the plugin Z but now uses 1.7 and it also grabs the Q to do the build and after that <click> Tycho can again build A,B and C.\n
...to help on that Tycho supports target definitions - here I can specify the Z plugin specific version and I can even add other plugins to the target platform which might not be explicitly needed by the plugin but might be relevant for actually running tests for this build. Same approach again <click> tycho gets the plugin Z but now uses 1.7 and it also grabs the Q to do the build and after that <click> Tycho can again build A,B and C.\n
...to help on that Tycho supports target definitions - here I can specify the Z plugin specific version and I can even add other plugins to the target platform which might not be explicitly needed by the plugin but might be relevant for actually running tests for this build. Same approach again <click> tycho gets the plugin Z but now uses 1.7 and it also grabs the Q to do the build and after that <click> Tycho can again build A,B and C.\n
...to help on that Tycho supports target definitions - here I can specify the Z plugin specific version and I can even add other plugins to the target platform which might not be explicitly needed by the plugin but might be relevant for actually running tests for this build. Same approach again <click> tycho gets the plugin Z but now uses 1.7 and it also grabs the Q to do the build and after that <click> Tycho can again build A,B and C.\n
Now what if I wanted to build C on its own - do I still need to check out A & B to build ? no, you can actually <click>publish your results to a p2 repository (in reality its just a directory on an http server) and you as a user can do that or your hudson build can do it and other builds can now pick it up.\n
Now what if I wanted to build C on its own - do I still need to check out A & B to build ? no, you can actually <click>publish your results to a p2 repository (in reality its just a directory on an http server) and you as a user can do that or your hudson build can do it and other builds can now pick it up.\n
Now what if I wanted to build C on its own - do I still need to check out A & B to build ? no, you can actually <click>publish your results to a p2 repository (in reality its just a directory on an http server) and you as a user can do that or your hudson build can do it and other builds can now pick it up.\n
...so how does that work ? well you just have your C plugin checked out and for this example i stated that C needs Z and B. Now because my latest builds are available in the p2 repositories tycho <click> is again able to create a target platform <click> that allows me to build C&#x2026;.so we used this setup but it actually gave us a lesson in time.\n
...so how does that work ? well you just have your C plugin checked out and for this example i stated that C needs Z and B. Now because my latest builds are available in the p2 repositories tycho <click> is again able to create a target platform <click> that allows me to build C&#x2026;.so we used this setup but it actually gave us a lesson in time.\n
...so how does that work ? well you just have your C plugin checked out and for this example i stated that C needs Z and B. Now because my latest builds are available in the p2 repositories tycho <click> is again able to create a target platform <click> that allows me to build C&#x2026;.so we used this setup but it actually gave us a lesson in time.\n
...so how does that work ? well you just have your C plugin checked out and for this example i stated that C needs Z and B. Now because my latest builds are available in the p2 repositories tycho <click> is again able to create a target platform <click> that allows me to build C&#x2026;.so we used this setup but it actually gave us a lesson in time.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
Tycho is very good at matching how PDE/p2 is normally used by having .qualifiers and replace it with a real qualifier. its default a timestamp but you can also override it as shown here. the timpestamp is what caught us offguard since we have <click> a build server in eastern us - our hudson instance lives there...and our team and community builds against it from all over the world. Now what happend is that tycho had a bug that made the build look as they were always done &#x201C;back in time&#x201D; and thus users local builds in Eu/Asia was hornored first, but those living behind that red line saw their builds sometime pickup old stuff because the timestamp was &#x201C;ahead of time&#x201D;.\n
luckily in 0.13 they fixed this and just like traditional mvn this qualifier is now generated with an UTC timestamp and not a local one! So at least use 0.13 if you are in a world wide team.\n
Another great thing about Tycho is that it generates updatesites just as easy as it builds plugins - since it has all the right metadata to do this based on the existing PDE build.properties and manifest.mf files it just works....but some things are missing in this picture...and that is...<click>\n
Source features - I want our technical users to be able to see how we build the features they are using and let them contribute back easily. For that we need source Eclipse features. This before tycho required a lot of templating code and tedius setup and repetition.<click> in tycho it just requires a bunch of xml noise.<click>p.s. all this only work in 0.14+ <click>\n
Source features - I want our technical users to be able to see how we build the features they are using and let them contribute back easily. For that we need source Eclipse features. This before tycho required a lot of templating code and tedius setup and repetition.<click> in tycho it just requires a bunch of xml noise.<click>p.s. all this only work in 0.14+ <click>\n
The interesting part are that you just need to enable source-feature packaging and enable a p2-metadata generation of these during packaging.\nWhat are we getting for adding this bunch of xml ?\n
Before we had the updatesite as we were used to it...\n
Now we have source features in there - all nicely installable and reusable. Greatness! Just one of the many upsides of marrying maven and p2; it might not be perfect in the beginning but generally the end result is so much worth it.\n
...but time is short and its time to try and sum up what is good, bad and ugly about Tycho <click>. The good is that this stuff just works - the additional metadata is concise and opens up to use all the great stuff happening in the mvn ecosystem. And something I haven&#x2019;t highlighted here is that the guys from sonatype and SAP and others are very active on the mailing list to help figure out the tricky corners and fix bugs you helped identify. The Bad side is that there are bugs and there have been some nasty ones but luckily most of these are fixed in 0.13 and onwards and I hope at tonight BOF&#x2019;s we can tackle some of the left over issues&#x2026; and if there is one ugly thing I should say about these is that to setup Tycho you need to understand mvn, osgi and P2 - and that is a challenge...but the same challenge also existed with PDE/Build and the power of tycho is that because it is much more strict it actually helped us to cleanup things we ignored or didnt realize was true problems for p2/osgi until Tycho told us differently.\n
...but time is short and its time to try and sum up what is good, bad and ugly about Tycho <click>. The good is that this stuff just works - the additional metadata is concise and opens up to use all the great stuff happening in the mvn ecosystem. And something I haven&#x2019;t highlighted here is that the guys from sonatype and SAP and others are very active on the mailing list to help figure out the tricky corners and fix bugs you helped identify. The Bad side is that there are bugs and there have been some nasty ones but luckily most of these are fixed in 0.13 and onwards and I hope at tonight BOF&#x2019;s we can tackle some of the left over issues&#x2026; and if there is one ugly thing I should say about these is that to setup Tycho you need to understand mvn, osgi and P2 - and that is a challenge...but the same challenge also existed with PDE/Build and the power of tycho is that because it is much more strict it actually helped us to cleanup things we ignored or didnt realize was true problems for p2/osgi until Tycho told us differently.\n
...but time is short and its time to try and sum up what is good, bad and ugly about Tycho <click>. The good is that this stuff just works - the additional metadata is concise and opens up to use all the great stuff happening in the mvn ecosystem. And something I haven&#x2019;t highlighted here is that the guys from sonatype and SAP and others are very active on the mailing list to help figure out the tricky corners and fix bugs you helped identify. The Bad side is that there are bugs and there have been some nasty ones but luckily most of these are fixed in 0.13 and onwards and I hope at tonight BOF&#x2019;s we can tackle some of the left over issues&#x2026; and if there is one ugly thing I should say about these is that to setup Tycho you need to understand mvn, osgi and P2 - and that is a challenge...but the same challenge also existed with PDE/Build and the power of tycho is that because it is much more strict it actually helped us to cleanup things we ignored or didnt realize was true problems for p2/osgi until Tycho told us differently.\n
...so in overall Tycho is mostly just damn good :)\n
...so in overall Tycho is mostly just damn good :)\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
...and that actually concludes my talk and I&#x2019;ve put some resource links here to what I&#x2019;ve used to track/learn tycho and also the blog I&#x2019;ve written about our tycho versions plugin for those that are interested...and with that I open up for questions.\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n
Thank you - and Please go to this URL to vote on this talk! thank you!\n