Build Tool for RCP [message #1228028] |
Mon, 06 January 2014 08:36 |
S. Schulz Messages: 72 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 #1233678 is a reply to message #1233643] |
Mon, 20 January 2014 09:06 |
|
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
HOME: http://www.lorenzobettini.it
TDD Book: https://leanpub.com/tdd-buildautomation-ci
Xtext Book: https://www.packtpub.com/application-development/implementing-domain-specific-languages-xtext-and-xtend-second-edition
|
|
|
|
|
Re: Build Tool for RCP [message #1233741 is a reply to message #1233643] |
Mon, 20 January 2014 11:36 |
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 #1257202 is a reply to message #1255502] |
Wed, 26 February 2014 07:00 |
|
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 #1257240 is a reply to message #1257213] |
Wed, 26 February 2014 07:53 |
|
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 #1257271 is a reply to message #1257259] |
Wed, 26 February 2014 08:33 |
|
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 #1257459 is a reply to message #1257411] |
Wed, 26 February 2014 12:58 |
|
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 #1257666 is a reply to message #1257522] |
Wed, 26 February 2014 17:29 |
|
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 #1258593 is a reply to message #1258405] |
Thu, 27 February 2014 14:47 |
|
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 #1269163 is a reply to message #1228028] |
Tue, 11 March 2014 13:22 |
S. Schulz Messages: 72 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. =/
|
|
|
|
|
|