Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Rich Client Platform (RCP) » Build Tool for RCP
Build Tool for RCP [message #1228028] Mon, 06 January 2014 08:36 Go to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Hello!

A question to all companies using Eclipse RCP commercially (and I know there are some):

What tool do you use to automatically build your software components?

Thanks for taking the time to answer!
Re: Build Tool for RCP [message #1232345 is a reply to message #1228028] Thu, 16 January 2014 18:33 Go to previous messageGo to next message
Ed Gow is currently offline Ed Gow
Messages: 8
Registered: July 2009
Junior Member
Maven/Tycho run by an Atlassian Bamboo server. I'd like to replace Tycho, but it seems to be the only game in town. Last I heard, even the Scala Eclipse plugin team used Tycho rather than making the Scala build tool sbt work for plugin builds.
Re: Build Tool for RCP [message #1232997 is a reply to message #1232345] Sat, 18 January 2014 09:44 Go to previous messageGo to next message
Lorenzo Bettini is currently offline Lorenzo Bettini
Messages: 1371
Registered: July 2009
Senior Member
On 16/01/2014 19:33, Ed Gow wrote:
> Maven/Tycho run by an Atlassian Bamboo server. I'd like to replace
> Tycho, but it seems to be the only game in town. Last I heard, even the
> Scala Eclipse plugin team used Tycho rather than making the Scala build
> tool sbt work for plugin builds.

We use Buckminster, the other game in town :)

--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it
Xtext Book:
http://www.packtpub.com/implementing-domain-specific-languages-with-xtext-and-xtend/book
Re: Build Tool for RCP [message #1233643 is a reply to message #1232997] Mon, 20 January 2014 07:09 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thanks you two for answering.

> We use Buckminster, the other game in town Smile

Really? I took a look at this one, but it seemed it isn't maintained anymore. Is it stable? Does it scale well for multipart projects?

I had some time at work to validate its functionality, but when I did http://eclipse.org/buckminster/ was down and so my boss told me: "So that's the reason why the Eclipse team switched from Buckminster to Tycho."
Re: Build Tool for RCP [message #1233678 is a reply to message #1233643] Mon, 20 January 2014 09:06 Go to previous messageGo to next message
Lorenzo Bettini is currently offline Lorenzo Bettini
Messages: 1371
Registered: July 2009
Senior Member
On 20/01/2014 08:09, S. Schulz wrote:
> Thanks you two for answering.
>
>> We use Buckminster, the other game in town :)
>
> Really? I took a look at this one, but it seemed it isn't maintained
> anymore. Is it stable? Does it scale well for multipart projects?

Yes, it is still mantained and stable (as far as I know, it is the build
tool used by EMF, CDO and Xtext, not to mention our new Eclispe project
http://projects.eclipse.org/projects/modeling.emf-parsley :)

what do you mean by "multipart"?

> I had some time at work to validate its functionality, but when I did
> http://eclipse.org/buckminster/ was down and so my boss told me: "So
> that's the reason why the Eclipse team switched from Buckminster to Tycho."

as far as I know it was down due to Eclipse web sites switching to git
(https://bugs.eclipse.org/bugs/show_bug.cgi?id=424958 )

I wrote a tutorial for building RCP app with Buckminster
http://www.lorenzobettini.it/2013/01/building-an-eclipse-rcp-product-with-buckminster/

hope this helps
cheers
Lorenzo

--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it
Xtext Book:
http://www.packtpub.com/implementing-domain-specific-languages-with-xtext-and-xtend/book
Re: Build Tool for RCP [message #1233691 is a reply to message #1233678] Mon, 20 January 2014 09:45 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thanks a lot! I'll check it as soon as possible!

> what do you mean by "multipart"?

In our company, a typical project consists multiple plug-ins, and that's where Ant and / or the PDE build get ugly, and I suspect it's part of the reason why Tycho doesn't work that well for us.
Re: Build Tool for RCP [message #1233725 is a reply to message #1233691] Mon, 20 January 2014 10:42 Go to previous messageGo to next message
Lorenzo Bettini is currently offline Lorenzo Bettini
Messages: 1371
Registered: July 2009
Senior Member
On 20/01/2014 10:45, S. Schulz wrote:
> Thanks a lot! I'll check it as soon as possible!
>
>> what do you mean by "multipart"?
>
> In our company, a typical project consists multiple plug-ins, and that's
> where Ant and / or the PDE build get ugly, and I suspect it's part of
> the reason why Tycho doesn't work that well for us.

Buckminster aims at mimicking what you do in your Eclipse workbench; so
if when you develop you import in the workspace projects from several
sources then you can do that also during the build with Buckminster.

hope this helps
Lorenzo

--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it
Xtext Book:
http://www.packtpub.com/implementing-domain-specific-languages-with-xtext-and-xtend/book
Re: Build Tool for RCP [message #1233741 is a reply to message #1233643] Mon, 20 January 2014 11:36 Go to previous messageGo to next message
Eclipse User
On 01/20/2014 08:09 AM, S. Schulz wrote:
> Thanks you two for answering.
>
>> We use Buckminster, the other game in town :)
>
> Really? I took a look at this one, but it seemed it isn't maintained
> anymore. Is it stable? Does it scale well for multipart projects?
> I had some time at work to validate its functionality, but when I did
> http://eclipse.org/buckminster/ was down and so my boss told me: "So
> that's the reason why the Eclipse team switched from Buckminster to Tycho."

Hi,

we, the ECF project [1] do all our builds with Buckminster even though
our build is a rather complicated one. Buckminster is doing the job just
fine and I can recommend it.

M.

[1] http://eclipse.org/ecf
Re: Build Tool for RCP [message #1233743 is a reply to message #1233691] Mon, 20 January 2014 11:41 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas Schindl
Messages: 5434
Registered: July 2009
Senior Member
our rcp consists from > 100 bundles and tycho handles that just fine.

Tom

On 20.01.14 10:45, S. Schulz wrote:
> Thanks a lot! I'll check it as soon as possible!
>
>> what do you mean by "multipart"?
>
> In our company, a typical project consists multiple plug-ins, and that's
> where Ant and / or the PDE build get ugly, and I suspect it's part of
> the reason why Tycho doesn't work that well for us.
Re: Build Tool for RCP [message #1233753 is a reply to message #1233743] Mon, 20 January 2014 12:09 Go to previous messageGo to next message
Axel Guckelsberger is currently offline Axel Guckelsberger
Messages: 224
Registered: July 2009
Senior Member
Hi,

we are using Buckminster, too. We are not selling the product though, it is free.

Regards,
Axel

[Updated on: Mon, 20 January 2014 12:10]

Report message to a moderator

Re: Build Tool for RCP [message #1233762 is a reply to message #1233743] Mon, 20 January 2014 12:19 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
> our rcp consists from > 100 bundles and tycho handles that just fine.

Yes Tycho is all fun and games until you want some "sophisticated" features like build tool and IDE using the same references to dependencies, version ranges, automatic releases, JUnit tests or even builds that don't take forever. I won't lie, some of these things are only a problem because our workflow is a bit faulty and the rest is due to the Eclipse framework, but we need a build tool that can adapt to our process, not the other way around.
Re: Build Tool for RCP [message #1240074 is a reply to message #1233762] Wed, 05 February 2014 16:45 Go to previous messageGo to next message
SlowStrider Mising name is currently offline SlowStrider Mising name
Messages: 115
Registered: July 2009
Senior Member
Currently I am the only programmer on a commercial project with a server + RCP client.
I use a combination of Maven and (ashamed to say!) the PDE export wizard. Maven builds the server AND core client bundle that allows communication with the server. PDE export builds the webstartable RCP client which needs to be copied into the server build.

A full build which can be deployed takes me about 45 minutes of manual work (which inludes waiting for Maven and PDE build).

I guess nowadays Tycho would be the best choice. I investigated Buckminster but gave up on it after reading about it for several days. It seemed that the necessary files to create aren't very large, but it was way too complex to understand.

We started pretty well with plain Maven and Hudson for continuous integration when creating the server application and the common code intended to be used by the client.
According to good practice we:
- didn't reinvent the weel, i.e. we have quite some Maven dependencies and these are not OSGi bundles
- don't repeat ourselves, so large parts of the same code base can be used by both server and client
- divided the application into several (Maven) modules
- did not confuse the technical concerns of client-server infrastructure with the logical application package/module structure which should be made by functionality

So we ended up with a very cleanly structured multi-module Maven project which ties together the modules with Aspect oriented programming. Until...
It was time to build an Eclipse RCP client on top of this perfect base. This immensely complicated things.

Top requirement was that during development we could use Eclipse's incremental compiler to work on both client and server and immediately test the results without requiring a full build. After that comes the requirement of continuous integration.

To get incremental compilation working, I had to convert our perfectly modularized Maven application into OSGi bundles. The "easiest" way I could find is to make it into one big Maven project so that it can be made into an OSGi bundle using felix maven plugin. This is because the only alternative was to make every pure Java/Maven submodule into an OSGi plugin which is even more work. The big bundle is recognized as a valid OSGi bundle by Eclipse after building it with Maven and manually updating the plugin classpath from the generated manifest.

With this way of building, updating/adding external Maven dependencies is a hell because I have to wait a few minutes for the Maven build.

This build system is really giving me headaches but I have no clue on how to make it better with e.g. Tycho without spending a few weeks to divide the big bundle into smaller bundles and find out how to get OSGi-ified versions of all of our bundles.

Had I known all of this extra OSGi-related effort in advance I would have probably never selected Eclipse RCP as the client platform but simply used Swing.
Re: Build Tool for RCP [message #1240307 is a reply to message #1240074] Thu, 06 February 2014 07:09 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thank you very much for your very detailed input. We're at the point were almost every day anyone asks "Why again are we using RCP?" (it started as joke, but now...). It's not only the build process, but about 90% of the frameworks out there just won't work [out-of-the-box] in an OSGI environment.

But I'm running of track. Don't be ashamed for a 45 minutes build process - I have a project, where there are 3 Tycho builds, that are always released together. No exceptions. I need about 2 hours for a regular release. With Maven it would be just a button click.

And I have looked into the alternatives, but none of them support our workflow. What we'd really need ist to start the PDE export automatically from the build server, nothing more. Well, tests would be nice, but nobody here does tests anyway and Tycho doesn't support them either.
Re: Build Tool for RCP [message #1240355 is a reply to message #1240307] Thu, 06 February 2014 09:32 Go to previous messageGo to next message
SlowStrider Mising name is currently offline SlowStrider Mising name
Messages: 115
Registered: July 2009
Senior Member
Yes, putting together many different kinds of technologies especially with OSGi can be very frustrating. Still I don't think there is really anyone to blame. It's all open source software and each tool does a good job at what it was designed for.

Well, the 45 minutes is not really the problem but the fact that it's not a headless build and I have to do it manually. Your post got me thinking about this some more and I think it may not be very hard for me to make a headless build with some extra effort by using Maven to build our "one big bundle" and then replacing the manual PDE export step with Tycho that uses this bundle simply as a finished jar file. I could probably write an ant script to put the steps of running Maven, then Tycho and then copying some stuff together.






Re: Build Tool for RCP [message #1240359 is a reply to message #1240355] Thu, 06 February 2014 09:42 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
You could try that if that's what you want. What I actually wanted to say, was: Using Tycho to release is as cumbersome as using the PDE build. Yes, Tycho runs headless in theory, but everything else you have to do yourself anyway. It's not like Maven where plug-ins are used for the hard parts (version management, branching / tagging, whatever). You'll have to do this by hand. But on the plus side, you get to wait a whole lot longer for the Tycho build to finish and Tycho has a tendency to take every version but the one in the target platform. (And because of that, releasing on a build server is just not practical.)

See this bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=342893
Re: Build Tool for RCP [message #1240367 is a reply to message #1240359] Thu, 06 February 2014 09:55 Go to previous messageGo to next message
SlowStrider Mising name is currently offline SlowStrider Mising name
Messages: 115
Registered: July 2009
Senior Member
I see... I must admit I have never used Tycho before so I don't know about that. I am still doing things like version management branching/tagging by hand, so I assume for me using Tycho to build the product on a build server instead of in my workspace is still a step forward.
Re: Build Tool for RCP [message #1240369 is a reply to message #1240367] Thu, 06 February 2014 09:58 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Try it, it shouldn't be that much work to set up, as you said. We don't use the build server anymore to release Tycho projects, because when doing everything by hand, waiting for the server to pick up SVN changes is just too much time that can be used for something more fun... like writing hateful comments on forums.
Re: Build Tool for RCP [message #1251488 is a reply to message #1228028] Thu, 20 February 2014 09:14 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
SlowStrider, did you have the time to test out Tycho yet? I'm always eager to get a second opionion and maybe find out what we are doing so horrible wrong.
Re: Build Tool for RCP [message #1255448 is a reply to message #1251488] Mon, 24 February 2014 12:58 Go to previous messageGo to next message
SlowStrider Mising name is currently offline SlowStrider Mising name
Messages: 115
Registered: July 2009
Senior Member
I am currently using Tycho to build a working toy example for Eclipse RCP with webstart. So far my experience is very positive.

Using Lars vogels tutorial on Tycho it took me little effort to get Tycho to create a launchable product. I only had to copy/paste/adjust some standard poms and add a master pom.

I also got the webstart build working by using the tycho-jnlp-plugin and following this blog. I did have to add a custom ant script (which I already had) into the Maven build for adding the new required manifest security entries as described here (there is a pull request that should do the same but isn't merged yet).

I did encounter and solved a few problems amongst which:
- building the master project works fine, but building only the product project after I did a "mvn install" on the master project didn't work
This was caused by an issue with snapshot/qualifier versioning which was solved by letting my .product configuration depend on version 0.0.0 of my feature instead of 1.0.0.qualifier
- even though the product runs from the IDE my Tycho build failed to start with a long exception that a bundle could not be resolved. This was caused by a discrepancy in the target platform used by Tycho and that of my running Eclipse. My feature used version 0.0.0 of a plugin so that Tycho used a newer one which had an additional dependency I did not have in my feature. This could have been catched earlier by using a specific target definition.

So my next steps are:
- let both Tycho and Eclipse use the same target definition
- figure out how to let Tycho use a pom-first dependency
-> should be possible, see this blog
- use Tycho for my real application using the experience gained in the toy example
-> largest issue I can see is getting a working target definition with only p2 sites. I currently have some plugins that I manually copied to a directory but I read that Tycho cannot use this.

When I get everything running I will post my experience here.
Re: Build Tool for RCP [message #1255502 is a reply to message #1228028] Mon, 24 February 2014 14:06 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thanks for sharing! Did you try more "sophisticated" features like releasing and JUnit tests? That's were we're wasting a lot of valueable time and nerves. Some other pitfall is that Tycho doesn't copy very well with "deep" dependency trees (like A depends on B and C, and B depends on D 1.0 but B on D 1.1; Tycho might then use 1.0, 1.1 or 1.1-SNAPSHOT depending on the lunar cycle).

I don't want to discourage you, but when we started using it, we were positive Tycho would make our troubles go away. Now we just want Tycho to go away...
Re: Build Tool for RCP [message #1257202 is a reply to message #1255502] Wed, 26 February 2014 07:00 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
Our company is developping two products based on Eclipse RCP.

Our products are currently based on Eclipse Indigo and we have planned to upgrade soon at least for one of them. We have built an industrialisation chain using :
- Maven / Tycho
- Artifactory
- Hudson
- SonarQube

We have a very positive opinion about these tools and their use in an Eclipse RCP context. It was a bit painful with older versions of tycho but it has been improved significantly.
We manually build our target platforms, and share them between the developpers IDE, and the builds done on our industrialisation server. All our dependancies are managed by the PDE mechanism (not in the pom files). Our builds are done and tested on Windows and Linux (32/64b), thanks to several slaves managed by Hudson. Moreover, we have Junit tests which are executed on each build.

What we plan for the next steps is to integrate Jubula, to perform GUI testing. This is currently in validation phase, but all seems to work well. And once this will be available, we will automatically create the Jubula scripts from our tool MaTeLo, which use a model based testing approach.




Re: Build Tool for RCP [message #1257213 is a reply to message #1257202] Wed, 26 February 2014 07:17 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Wow, that sounds amazing, and really close to what we have / want to have. Are you able to share some details of your project structure? (E.g. do you have one build parent with many children, or separated modules? Do you use "src" as source folder or "src/main/java"?) And how are you able to use JUnit when neither Tycho nor Eclipse support it? Until now we only found integration tests or hacks (I had to hack M2E just to get it to leave a maven-like source folder structure in peace). Are you able to release automatically?

As I said, we are probably doing something horrible wrong for not being able to get it to work properly, and that our problems are not mentioned anywhere seems to support that theory. We just got to find out what it is.
Re: Build Tool for RCP [message #1257240 is a reply to message #1257213] Wed, 26 February 2014 07:53 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
I can't publish our complete product configuration but to help you on the different problematics :

1 - Project configuration :
We have configured a multi module project for Maven. All our Eclipse plugins, features and fragments have their own folder and thus their own pom.xml, which is quite simple in most cases. The packagings used are :
- for the features
<packaging>eclipse-feature</packaging>

- for the plugins
<packaging>eclipse-plugin</packaging>

- for the fragments containing our Junit tests
<packaging>eclipse-test-plugin</packaging>


All the corresponding Eclipse projects use an 'src' source folder and 'target/classes' as output folder. We don't use M2E for our daily work, we prefere the maven command lines, which can work in parallel with the Eclipse builds.

We also have a separated basic Eclipse project, containing our .product definition. This project has also pom.xml, with the following packaging :
<packaging>eclipse-repository</packaging>
It's in this pom file that we have configured the tycho plugins tycho-p2-repository-plugin and tycho-p2-director-plugin.

All these projects are linked to a parent pom.xml, which references all the child modules, defines the p2 repository built and used as our TP, and which contains the configuration of the tycho plugins tycho-maven-plugin and target-platform-configuration.

2 - Unit test configuration :
The unit tests configuration is managed in the parent pom.xml, using the tycho-surefire-plugin. We use fragments to be able to access to the classes under test, and guaranty the separation between functionnal code and test code.

Finally, the global project configuration is organised in an 'Eclipse way', which does not respect the full Maven conventions, but it works.


Re: Build Tool for RCP [message #1257259 is a reply to message #1257240] Wed, 26 February 2014 08:17 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thank you so much, this helps tremendously. So you have one parent with one plug-in, feature and test folder? We had all the plug-ins of one group under one build parent, but we started refactoring some months ago and are aiming for a structure like that in hopes that at least some of our problems could get solved by the new structure.

And "eclipse-test-plugin" is now for unit tests? When we tried using it, it was for integration tests, pulling up an entire OSGI environment (if I recall correctly, with the dependencies declared in the pom instead of reusing the known data) and taking forever.
Re: Build Tool for RCP [message #1257271 is a reply to message #1257259] Wed, 26 February 2014 08:33 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
Just to sum up, we have :
- one pom.xml parent
- one standard Eclipse project containing our '.product' configuration
- several Eclipse feature projects
- several Eclipse plugin projects and for each one an Eclipse fragment used for the tests

And you are right, the "eclipse-test-plugin" is not intially made for unit test. Thus, when the tests are runned by a developper, he will launch in Eclipse a 'JUnit Plug-in Test' execution. It will first load the OSGI environnement, and that is long. But the unit tests are quickly executed after this first phase. We can't really say that we have real unit tests, it's more like integartion tests because of this limitation.



Re: Build Tool for RCP [message #1257286 is a reply to message #1257271] Wed, 26 February 2014 08:52 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thank you very much, it's really good to have a reference what other people are doing.
Re: Build Tool for RCP [message #1257386 is a reply to message #1228028] Wed, 26 February 2014 11:10 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Ah, one thing: You didn't answer if you are able to release automatically. Are you?
Re: Build Tool for RCP [message #1257397 is a reply to message #1257386] Wed, 26 February 2014 11:27 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
Yes, our industrialisation final result is an executable installer for the windows platforms (build with InnoSetup), and a zip for the linux ones.

Re: Build Tool for RCP [message #1257411 is a reply to message #1257397] Wed, 26 February 2014 11:46 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Now that's impressing. Smile Thanks for taking your time to answer my questions.
Re: Build Tool for RCP [message #1257459 is a reply to message #1257411] Wed, 26 February 2014 12:58 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
Don't hesitate if you have any question when you will work on this.

If you want a vision on what we plan for the end of the year, it is to integrate Papyrus on our project management process. The goal is to define the customers needs with Requirement (SysML, in Papyrus), guarantee their traceability with the use cases, and the test cases, and generate automatic tests on ours GMF editors. This is another challenge as Jubula doesn't manage the GMF components in its test execution.


Re: Build Tool for RCP [message #1257522 is a reply to message #1228028] Wed, 26 February 2014 14:21 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Thank you. How do you release? Or more specifically: Which Tycho plug-ins do you use for tagging and the version updates? That's the crux why we have to do it manually.
Re: Build Tool for RCP [message #1257666 is a reply to message #1257522] Wed, 26 February 2014 17:29 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
To be honnest in our first iteration, we manually upgraded our plugins version. This was not satisfying as we had to change the version in our pom.xml and in the manifest file. Now we use a tycho command line to synchronise the versions in our pom from the one specified in our manifest.

And for tagging / release version, we use the hudson mechanisms (separate builds from the daily ones).


Re: Build Tool for RCP [message #1258405 is a reply to message #1228028] Thu, 27 February 2014 10:52 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
So... how do you increase the version in the manifest?
Re: Build Tool for RCP [message #1258593 is a reply to message #1258405] Thu, 27 February 2014 14:47 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
How we work :
- The version of our plugins is set manually in the manifest files, when a plugin evolved
- The version of our features is set manually in the manifest files, when its content change (not the same plugins)
- The version in our pom.xml is automatically updated, using the command line :
mvn org.eclipse.tycho:tycho-versions-plugin:0.19.0:update-pom 


Re: Build Tool for RCP [message #1264352 is a reply to message #1228028] Wed, 05 March 2014 06:41 Go to previous messageGo to next message
S. Schulz
Messages: 71
Registered: September 2011
Member
Sorry I took so long, we're pondering what to do with this information and how to test this out without making critical projects fail in the most horrible fashion. I have another question for you: You don't use SNAPSHOT as a version qualifier, do you?
Re: Build Tool for RCP [message #1264406 is a reply to message #1264352] Wed, 05 March 2014 07:45 Go to previous messageGo to next message
Jonathan Dumont is currently offline Jonathan Dumont
Messages: 58
Registered: March 2011
Location: Laval
Member
No we don't use any qualifier.

But our current version number update doesn't fulfil us. If you have any advise, or if you find an other way to do it, we are interested.


Re: Build Tool for RCP [message #1264487 is a reply to message #1228028] Wed, 05 March 2014 09:05 Go to previous messageGo to next message
SlowStrider Mising name is currently offline SlowStrider Mising name
Messages: 115
Registered: July 2009
Senior Member
Here is the promised update. My experience with Tycho is still very positive! It can now headlessly build my Webstartable client application and I am already using Jenkins to do this automatically whenever I commit something in subversion.

As for the management of versions: we release only one software product. This means it's no big issue for us if we simply manually do a search/replace for the version number or use tycho-versions-plugin.

As I indicated in my previous reply, indeed for me the target platform was the hardest thing to get right. I have many Maven pom-first dependencies that are already OSGi bundles. Maven can use these without problems if you configure it with <pomDependencies>consider</pomDependencies> and add the dependencies to the parent pom so they are available in each plugin.

But the thing is: when developing within Eclipse PDE you should be using the exact same target platform as Tycho does. Previously I used the maven-dependency-plugin to copy the plugins to a directory on the target platform, but Tycho doesn't support directories in the target definition, only p2 sites. One solution would be to put the dependencies in a p2 site yourself, but this means extra work, especially when your dependencies change/need to be updated.
After a lot of time Googling for the problem I found this little gem: the pde-target-maven-plugin

It simply takes a target definition file and generates a new one with the locations of the pom-first dependencies inside the local Maven repository.
This can then be set as the target definition for Eclipse. Tycho ignores these directories, but still uses the pom-first dependencies. (Now that I think of it, it would also be possible to generate this PDE target definition by adding a "lib" directory that is created with the help of the maven-dependency-plugin)

Note that we also have a pom-first dependency with code that is common to our non-OSGi server and our Eclipse client which is developed within the same workspace. Such pom-first dependencies need not be on the target platform in Eclipse. You can simply configure maven-dependency-plugin to ignore these by using the groupId of your project.

Unfortunately, you have to do a "mvn install" on these pom-first dependencies before running Tycho. You cannot do this in one call with a "parent-parent" pom because of this issue.
Re: Build Tool for RCP [message #1269163 is a reply to message #1228028] Tue, 11 March 2014 13:22 Go to previous message
S. Schulz
Messages: 71
Registered: September 2011
Member
I had some time for this topic the last days, and I accidently found out that "mvn release:prepare" and "mvn release:perform" do now work with Tycho somewhat. I couldn't find out what bugs prevented us from using it before, but knowing Tycho it had to be something stupid (like the "tycho-version-plugin", which does not work since at least 0.10.0, and we're at 0.20.0 now).

The only problem was the "maven-source-plugin", which created a JAR that overwrote the one of the "tycho-source-plugin" and that way made the resulting source JAR unusable. Since I couldn't get the maven plug-in from getting called nor change the order of the two plug-ins, I took the cowards way out and renamend the final JAR of the maven plug-in, so it doesn't overwrite anymore.

In the end I wrote a small Java program that sets the versions and does the validation necessary for plug-ins, then uses the Maven Invoker to do the actual release and then sets the versions again. It's a big step from not being able to do anything while releasing, but there's still a lot of work ahead of us if we want to release using our Jenkins. =/
Previous Topic: workbench.xmi have no menu and trimbar Contributions from Application.e4xmi if RCP kills.
Next Topic:persist state of navigation history
Goto Forum:
  


Current Time: Thu Oct 30 15:22:31 GMT 2014

Powered by FUDForum. Page generated in 0.05736 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software