felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clement Escoffier <clement.escoff...@gmail.com>
Subject Re: iPojo workflow
Date Wed, 25 Jun 2014 08:18:18 GMT


We are working on a new toolset to speed up the development of iPOJO applications. So far,
theses tools are developed for web applications, but can be applied almost everywhere. 

In the Wisdom Project (http://wisdom-framework.org), we developed a ‘watch’ mode based
on Apache Maven. Why Maven ? Because it’s our reference, and all our developers, our CI
servers even our QA team uses it. So, it avoids the uncanny valley feeling you have using
IDE-centric development. 

With Wisdom, you launch Maven once, and it does its job on every file change. Wisdom is based
on Apache Felix and iPOJO meaning that Wisdom artifacts are OSGi bundles that, if they contain
iPOJO components, are also manipulated.

So, what about the process with this tool:
- you create a project
- you import the project into intellij or eclipse as a Maven project or as an Eclipse project
(after having executed mvn eclipse:eclipse)
- you launch mvn wisdom:run - it launches a Felix framework with all the Wisdom services (including
iPOJO, Configuration Admin…)
- you are all set, happy coding

Then, every time you save a file from your project, it re-compiles, rebuilds the bundle and
redeploys it.

Notice that, the launched Felix framework contains all the bundles on which your project depends
on. So, if in your project’s pom file, you have a dependency that is a bundle, it is deployed
(by default, Wisdom also deploy transitive dependencies).

Wisdom also provides testing support reproducing the configuration, deploy your bundles and
let you test your services, components and so on. If you are developing web applications it
also offers blackbox and selenium/fluentlenium support.

The 0.6 version of Wisdom is going to be released on Friday. This new version supports Java
8, and a basic support for multi-module projects.

The experiences, we are running in Wisdom, are going to be integrated in iPOJO. In other words,
the watch mode and ‘distribution-based-development’ are on the iPOJO 2 roadmap.



PS: Wisdom is not part of Apache Felix, but it’s open source and licensed under the ASL

On 23 juin 2014 at 21:29:38, alejandro.endo@miranda.com (alejandro.endo@miranda.com) wrote:

I was wondering what kind of workflow some of the people in the mailing  
list use for developing with iPojo. Can some of you give me some details  
of how the normal development cycle of changing code, building,  
provisioning, running goes?  

The one I was using before we needed Java 8 was:  
1) Modify the code  
2) The iPojo nature plugin did the bytecode manipulation in the .class.  
All this automatically and within eclipse, just as soon as you did CTRL+S  
3) The Tycho Configurator + maven-bundle-plugin did the manifest  
generation including the IPOJO-Components, also within eclipse and as soon  
as you did CTRL+S  
4) I ran (by restarting the OSGi container every time) using PDE with  
equinox by just setting the iPojo bundle as part of the target platform  
and my bundles with the iPojo components ran from the workspace (i.e. as  
exploded jars)  

This was a pain to configure for new developers and you had to remember to  
enable the iPojo nature in projects that had ipojo components since it was  
not added automatically by m2e  
Now that the iPojo Nature doesn't work well with iPojo 1.12 i'm thinking  
of some better workflows. I am thinking of something like this  

1) Modify the code  
2) run mvn package to construct the jar already manipulated (via  
maven-ipojo-plugin) and the bnd-ipojo-plugin to ipojo'ize the manifest  
3) provision the jar to a running instance of equinox, maybe just moving  
the jar to a file watched by felix file-install. This way i won't have to  
restart the container every time  

Some problems I foresee with the new workflow are. 1) you need to run  
maven every time, which is slow, so maybe the whole chain will not be  
triggered with just CTRL+S but with an explicit action to start the whole  
pipeline when the developer is ready to test. 2) i need to find a way to  
move the jar to the file-install folder, probably via some maven hack  
(unless someone has an idea on how to provision directly to equinox via a  
maven plugin or something?)  

Any other workflow you guys can share will help me. I am looking for  
maven-friendly workflows since at the end I need to be able to build the  
production bundles in a central Jenkins build  

Thank you  

Alejandro Endo | Software Designer/Concepteur de logiciels  

Privileged and/or Confidential information may be contained in this  
message. If you are not the addressee of this message, you may not  
copy, use or deliver this message to anyone. In such event, you  
should destroy the message and kindly notify the sender by reply  
e-mail. It is understood that opinions or conclusions that do not  
relate to the official business of the company are neither given  
nor endorsed by the company.  
Thank You.  

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message