Hi,

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.

Regards,

Clement

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

On 23 juin 2014 at 21:29:38, [email protected] 
([email protected]) 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  


DISCLAIMER:  
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.  

Reply via email to