Attachements are usually stripped on the mailing list. Would you mind raising a JIRA issue and attaching your patch to it ?
On Thu, May 6, 2010 at 22:44, Bengt Rodehav <[email protected]> wrote: > Guillaume, > > Attached to this mail is a modified version of > AddFeaturesToRepoMojo.java. I added two configuration parameters: > > - skipNonMavenProtocols: Setting this to true (false is default) > causes the plugin to look for the first occurence of "mvn:" and start > passing the url from there. This enables url's like > > "<bundle>ipojo:mvn:se.digia.connect/test-route-template/${project.version}</bundle>". > > - skipUrlParameters: Setting this to true (false is default) causes > the plugin to truncate the url if a "#" or a "?" is encountered. This > enables url's like: > > "<bundle>war:mvn:se.digia.connect/gui-war/${project.version}/war?Webapp-Context=connect_gui</bundle>" > > I haven't contributed to Apache before so you might want to check the > code extra carefully. Note that I haven't modified > ValidateFeaturesMojo.java. I understand that it implements the > validate-features goal. Does it need to be changed too? I haven't used > it so I wouldn't know. > > Anyway, the attached version solves the problems I've had so far. > > /Bengt > > > 2010/5/6 Bengt Rodehav <[email protected]>: > > I'll take a look at it... > > > > 2010/5/6 Guillaume Nodet <[email protected]>: > >> Mmh, I think I misunderstood what you were trying to achieve. > >> It's because the plugin can be used to actually generate the feature > >> descriptor. > >> If you have an existing feature repository, the plugin can be used to > put > >> all the jars > >> in the system folder. And if this fail for other kind of url handlers, > it > >> should just do its best and not throw an error. > >> Wanna try to modify the plugin to better support your ipojo and war url > >> handlers ? > >> > >> On Thu, May 6, 2010 at 16:28, Bengt Rodehav <[email protected]> wrote: > >> > >>> Guillaume, > >>> > >>> Think I found the thread you were mentioning. Now I need to learn OBR > >>> as well :-) > >>> > >>> Will using OBR via Karaf features solve the problem I'm trying to > >>> solve? What I want to achieve is to create a local repository (under > >>> my Karaf installation) that includes everything needed without having > >>> to search for it in an external maven repository. I want a self > >>> sustained application. Will OBR solve this? > >>> > >>> /Bengt > >>> > >>> 2010/5/6 Bengt Rodehav <[email protected]>: > >>> > See comments below... > >>> > > >>> > 2010/5/6 Guillaume Nodet <[email protected]>: > >>> >> On Thu, May 6, 2010 at 16:02, Bengt Rodehav <[email protected]> > wrote: > >>> >> > >>> >>> Regarding the non" mvn:" protocols, I guess I'll either have to > stop > >>> >>> using them as part of features or somehow exclude them fromthe > >>> >>> features-maven-plugin and handle them manually. It's a shame > though... > >>> >>> Wouldn't it be a reasonable enhancement to the plugin to be able to > >>> >>> skip leading protocols as long as" mvn:" is present further down > the > >>> >>> url? > >>> >>> > >>> >> > >>> >> Well, if we do the enhancement i talked about in another thread, > which > >>> is to > >>> >> let > >>> >> OBR kick in and resolve any missing dependency, then the plugin > would > >>> not > >>> >> be really helpfull anymore, would it ? > >>> >> > >>> >> > >>> >>>> > >>> >>>> I've totally missed this thread. Will check it out. Do you mean > that > >>> the alternate solution (OBR...) you mention will render the > >>> features-maven-plugin unnecessary? > >>> >>>> > >>> >>> > >>> >>> Regarding maven 3, I think it can only be a matter of timing. > Sooner > >>> >>> or later it should/must be supported. I think maven 3 compatibility > >>> >>> should also be added to the "todo list" (JIRA I guess). > >>> >>> > >>> >>> > >>> >> Agreed, but if we can't support both at the same time, i'd rather > wait > >>> until > >>> >> 3.0 is released. > >>> >> > >>> >>>> I totally understand that. However, I haven't seen that situation > >>> before since maven 3 is designed to be totally backwards compatible. > Most of > >>> the time the problems arise when the plugins use some > >>> unsupported/undocumented feature. > >>> >>>> > >>> >>> /Bengt > >>> >>> > >>> >>> > >>> >>> 2010/5/6 Guillaume Nodet <[email protected]>: > >>> >>> > I'm not aware of any effort related to maven 3 yet. > >>> >>> > > >>> >>> > As for the war and ipojo protocols, i don't think it would work > well. > >>> >>> The > >>> >>> > features plugin try to generate a list of bundles using the mvn > >>> protocol > >>> >>> > only iirc. And if you use something else, it won't be able to > >>> understand > >>> >>> > and find the required dependencies. > >>> >>> > > >>> >>> > I fear you may run into more problems trying to use the plugin > than > >>> >>> > maintaining the feature manually. > >>> >>> > > >>> >>> > On Thu, May 6, 2010 at 14:38, Bengt Rodehav <[email protected]> > >>> wrote: > >>> >>> > > >>> >>> >> I also have another problem with the plugin. I don't seem to be > able > >>> >>> >> to run it using maven 3 beta. I get the following error: > >>> >>> >> > >>> >>> >> [ERROR] Failed to execute goal > >>> >>> >> org.apache.felix.karaf.tooling:features-maven-plu > >>> >>> >> gin:1.4.0:add-features-to-repo (add-features-to-repo) on project > >>> >>> assembly: > >>> >>> >> Error > >>> >>> >> populating repository: unknown protocol: null -> [Help 1] > >>> >>> >> > >>> >>> >> Note that I get this error even if I remove all references to > >>> "ipojo:" > >>> >>> >> and "war:". It seems to be a completely different problem. The > >>> plugin > >>> >>> >> works using maven 2.2.1 but we are in the process of migrating > to > >>> >>> >> maven 3 and try to make sure that all our pom's work with the > beta > >>> >>> >> version. Do you know if anyone have tried the plugin using maven > 3? > >>> Is > >>> >>> >> anyone looking into maven 3 support? > >>> >>> >> > >>> >>> >> /Bengt > >>> >>> >> > >>> >>> >> > >>> >>> >> 2010/5/6 Bengt Rodehav <[email protected]>: > >>> >>> >> > Guillaume, > >>> >>> >> > > >>> >>> >> > I think I probably misunderstood how to use the plugin. I > wasn't > >>> aware > >>> >>> >> > that all dependencies must be added to the maven project. I > was > >>> hoping > >>> >>> >> > that they could be resolved anyway since they are listed in > the > >>> >>> >> > features file. When I add all the dependencies, they will be > >>> installed > >>> >>> >> > in my local repo and is accessible to the plugin. > >>> >>> >> > > >>> >>> >> > I've now got almost everything to work expect for the url's > that > >>> are > >>> >>> >> > not "mvn:". I also use "ipojo:" and "war:" in my features > file, e > >>> g: > >>> >>> >> > > >>> >>> >> > > >>> >>> >> > >>> >>> > >>> > > <bundle>war:mvn:se.digia.connect/gui-war/${project.version}/war?Webapp-Context=connect_gui</bundle> > >>> >>> >> > > >>> >>> >> > >>> >>> > >>> > > <bundle>ipojo:mvn:se.digia.connect/test-route-template/${project.version}</bundle> > >>> >>> >> > > >>> >>> >> > How can I get the features-maven-plugin to work with those? At > >>> this > >>> >>> >> > point I'm not actually installing anything in Karaf, which > means > >>> that > >>> >>> >> > the protocol in front of "mvn:" ("ipojo:" and "war:") should > >>> actually > >>> >>> >> > be skipped. Is there a workaround for this? > >>> >>> >> > > >>> >>> >> > /Bengt > >>> >>> >> > > >>> >>> >> > > >>> >>> >> > 2010/5/5 Guillaume Nodet <[email protected]>: > >>> >>> >> >> Not sure to fully understand, but if those are dependencies > of > >>> your > >>> >>> >> maven > >>> >>> >> >> project, they should be in your local repo, shouldn't they ? > >>> >>> >> >> > >>> >>> >> >> On Wed, May 5, 2010 at 23:02, Bengt Rodehav < > [email protected]> > >>> >>> wrote: > >>> >>> >> >> > >>> >>> >> >>> It seems like the features-maven-plugin is exactly what I'm > >>> looking > >>> >>> >> >>> for. However I do run into one problem. I'm using a > repository > >>> >>> manager > >>> >>> >> >>> (Nexus) but the features-maven-plugin seems to only look in > the > >>> >>> locak > >>> >>> >> >>> repository (which doesn't contain everything). I get the > >>> following > >>> >>> >> >>> error message: > >>> >>> >> >>> > >>> >>> >> >>> [INFO] [features:add-features-to-repo {execution: > >>> >>> >> add-features-to-repo}] > >>> >>> >> >>> Base repo: file://C:/dev/Maven/repository > >>> >>> >> >>> Copy: > >>> commons-pool/commons-pool/1.5.4/commons-pool-1.5.4.jar > >>> >>> >> >>> Copy: > >>> >>> >> >>> > >>> >>> > org/apache/felix/karaf/shell/org.apache.felix.karaf.shell.ssh/1.4.0/o > >>> >>> >> >>> rg.apache.felix.karaf.shell.ssh-1.4.0.jar > >>> >>> >> >>> Copy: > >>> >>> >> >>> > >>> >>> > org/springframework/osgi/spring-osgi-annotation/1.2.0/spring-osgi-ann > >>> >>> >> >>> otation-1.2.0.jar > >>> >>> >> >>> Copy: > >>> org/ops4j/pax/web/pax-web-api/0.7.2/pax-web-api-0.7.2.jar > >>> >>> >> >>> [INFO] > >>> >>> >> >>> > >>> >>> >> > >>> > ------------------------------------------------------------------------ > >>> >>> >> >>> [ERROR] BUILD ERROR > >>> >>> >> >>> [INFO] > >>> >>> >> >>> > >>> >>> >> > >>> > ------------------------------------------------------------------------ > >>> >>> >> >>> [INFO] Error populating repository > >>> >>> >> >>> > >>> >>> >> >>> Can I configure the plugin to use Nexus instead? It's a bit > >>> strange > >>> >>> >> >>> because first everything is being downloaded to Nexus (due > to > >>> the > >>> >>> >> >>> dependencies I've added), but then when the plugin kicks in > and > >>> the > >>> >>> >> >>> repository is about to be created, only the local repo is > being > >>> >>> >> >>> searched. > >>> >>> >> >>> > >>> >>> >> >>> Any ideas? > >>> >>> >> >>> > >>> >>> >> >>> /Bengt > >>> >>> >> >>> > >>> >>> >> >>> > >>> >>> >> >>> 2010/5/5 Bengt Rodehav <[email protected]>: > >>> >>> >> >>> > Thanks a lot Guillaume - I will definitely take a look at > the > >>> >>> plugin > >>> >>> >> >>> > you mentioned. > >>> >>> >> >>> > > >>> >>> >> >>> > /Bengt > >>> >>> >> >>> > > >>> >>> >> >>> > 2010/5/5 Guillaume Nodet <[email protected]>: > >>> >>> >> >>> >> We actually have a maven plugin that helps in doing that. > >>> >>> >> >>> >> Take a look at how we package ServiceMix NMR or the full > >>> >>> ServiceMix > >>> >>> >> >>> >> distribution. > >>> >>> >> >>> >> It's based on Karaf, but includes some changes and > additional > >>> >>> >> bundles > >>> >>> >> >>> >> configured > >>> >>> >> >>> >> using features. It sounds exactly like what you want. > >>> >>> >> >>> >> > >>> >>> >> > http://svn.apache.org/repos/asf/servicemix/smx4/nmr/trunk/assembly/ > >>> >>> >> >>> >> > >>> >>> >> >>> >> The plugin could be enhanced to make this task easier > though, > >>> but > >>> >>> >> it's > >>> >>> >> >>> still > >>> >>> >> >>> >> a good > >>> >>> >> >>> >> starting point. The final packaging and other changes > are > >>> done > >>> >>> >> using > >>> >>> >> >>> the > >>> >>> >> >>> >> maven > >>> >>> >> >>> >> assembly plugin. Any help / suggestion / patch would be > >>> >>> welcomed ! > >>> >>> >> >>> >> > >>> >>> >> >>> >> As for maven, two things: > >>> >>> >> >>> >> * first, if a bundle can be located in the system > folder, it > >>> >>> won't > >>> >>> >> try > >>> >>> >> >>> to > >>> >>> >> >>> >> find it in any > >>> >>> >> >>> >> other maven repository, even for a snapshot > >>> >>> >> >>> >> * second, the list of repositories where the maven url > >>> handler > >>> >>> can > >>> >>> >> >>> >> download the > >>> >>> >> >>> >> artifacts from can be configured in > >>> >>> etc/org.ops4j.pax.url.mvn.cfg > >>> >>> >> >>> >> I agree i would not let artifacts be downloaded from the > >>> internet > >>> >>> >> >>> either. A > >>> >>> >> >>> >> nice configuration > >>> >>> >> >>> >> would be to point to a nexus repository manager and the > work > >>> >>> there. > >>> >>> >> >>> >> > >>> >>> >> >>> >> > >>> >>> >> >>> >> On Wed, May 5, 2010 at 11:18, Bengt Rodehav < > >>> [email protected]> > >>> >>> >> wrote: > >>> >>> >> >>> >> > >>> >>> >> >>> >>> I'm building an integration platform using Camel > deployed in > >>> >>> Karaf. > >>> >>> >> >>> >>> The platform will be used for different kinds of > >>> applications > >>> >>> >> (mainly > >>> >>> >> >>> >>> integration oriented of course). I'm not entirely sure > how I > >>> >>> best > >>> >>> >> >>> >>> construct an installation program for these > applications. > >>> >>> Basically > >>> >>> >> I > >>> >>> >> >>> >>> need to: > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> a) Install Karaf. This is as easy as unpacking a zip > file - > >>> very > >>> >>> >> >>> >>> convenient. > >>> >>> >> >>> >>> b) Configure Karaf. I will change some of the > configuration > >>> >>> files > >>> >>> >> and > >>> >>> >> >>> >>> add some. This is not hard. > >>> >>> >> >>> >>> c) Install the bundles needed for my application. This > is > >>> where > >>> >>> I > >>> >>> >> need > >>> >>> >> >>> >>> some advice. > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> My bundles are installed in two ways: via > startup.properties > >>> and > >>> >>> >> via > >>> >>> >> >>> >>> features defined in org.apache.felix.karaf.features.cfg. > The > >>> >>> >> bundles > >>> >>> >> >>> >>> in startup.properties refer to its location in the > folder > >>> >>> "system" > >>> >>> >> >>> >>> under the Karaf installation. I will probably define an > >>> >>> additional > >>> >>> >> >>> >>> folder where I will put bundles that I add to > >>> >>> startup.properties. > >>> >>> >> This > >>> >>> >> >>> >>> is to clearly distinguish between the standard Karaf > >>> >>> installation > >>> >>> >> >>> >>> (which I want to be able to upgrade easily) and my > >>> application > >>> >>> >> >>> >>> specific bundles. Don't know how I do this but I imagine > it > >>> is > >>> >>> >> >>> >>> configurable somehow. > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> However, most of my required bundles are installed as > Karaf > >>> >>> >> features > >>> >>> >> >>> >>> via maven (the url's begin with mvn:). In a development > >>> >>> environment > >>> >>> >> >>> >>> this is very convenient. In a production environment I > do > >>> not > >>> >>> want > >>> >>> >> my > >>> >>> >> >>> >>> application to go out on the Internet looking for > bundles. I > >>> >>> want > >>> >>> >> it > >>> >>> >> >>> >>> to be totally self sustained. In other words, I want my > >>> >>> >> installation > >>> >>> >> >>> >>> to contain (in a subfolder to the Karaf installation) > all > >>> the > >>> >>> >> needed > >>> >>> >> >>> >>> jars/bundles. My problem is how do I generate a folder > >>> >>> containing > >>> >>> >> all > >>> >>> >> >>> >>> my required bundles from a list of features (with the > "mvn:" > >>> >>> url)? > >>> >>> >> >>> >>> Ideally I would list the features I want and then > >>> automatically > >>> >>> >> >>> >>> generate a folder containing all the referred bundles. I > >>> would > >>> >>> then > >>> >>> >> >>> >>> include this folder in my installation. > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> Has anyone solved this problem (going from development > to > >>> >>> >> production > >>> >>> >> >>> >>> using Karaf)? What is best practice? > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> /Bengt > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> > >>> >>> >> > >>> --------------------------------------------------------------------- > >>> >>> >> >>> >>> To unsubscribe, e-mail: > [email protected] > >>> >>> >> >>> >>> For additional commands, e-mail: > >>> [email protected] > >>> >>> >> >>> >>> > >>> >>> >> >>> >>> > >>> >>> >> >>> >> > >>> >>> >> >>> >> > >>> >>> >> >>> >> -- > >>> >>> >> >>> >> Cheers, > >>> >>> >> >>> >> Guillaume Nodet > >>> >>> >> >>> >> ------------------------ > >>> >>> >> >>> >> Blog: http://gnodet.blogspot.com/ > >>> >>> >> >>> >> ------------------------ > >>> >>> >> >>> >> Open Source SOA > >>> >>> >> >>> >> http://fusesource.com > >>> >>> >> >>> >> > >>> >>> >> >>> > > >>> >>> >> >>> > >>> >>> >> >>> > >>> >>> > --------------------------------------------------------------------- > >>> >>> >> >>> To unsubscribe, e-mail: [email protected] > >>> >>> >> >>> For additional commands, e-mail: > [email protected] > >>> >>> >> >>> > >>> >>> >> >>> > >>> >>> >> >> > >>> >>> >> >> > >>> >>> >> >> -- > >>> >>> >> >> Cheers, > >>> >>> >> >> Guillaume Nodet > >>> >>> >> >> ------------------------ > >>> >>> >> >> Blog: http://gnodet.blogspot.com/ > >>> >>> >> >> ------------------------ > >>> >>> >> >> Open Source SOA > >>> >>> >> >> http://fusesource.com > >>> >>> >> >> > >>> >>> >> > > >>> >>> >> > >>> >>> >> > >>> --------------------------------------------------------------------- > >>> >>> >> To unsubscribe, e-mail: [email protected] > >>> >>> >> For additional commands, e-mail: [email protected] > >>> >>> >> > >>> >>> >> > >>> >>> > > >>> >>> > > >>> >>> > -- > >>> >>> > Cheers, > >>> >>> > Guillaume Nodet > >>> >>> > ------------------------ > >>> >>> > Blog: http://gnodet.blogspot.com/ > >>> >>> > ------------------------ > >>> >>> > Open Source SOA > >>> >>> > http://fusesource.com > >>> >>> > > >>> >>> > >>> >>> > --------------------------------------------------------------------- > >>> >>> To unsubscribe, e-mail: [email protected] > >>> >>> For additional commands, e-mail: [email protected] > >>> >>> > >>> >>> > >>> >> > >>> >> > >>> >> -- > >>> >> Cheers, > >>> >> Guillaume Nodet > >>> >> ------------------------ > >>> >> Blog: http://gnodet.blogspot.com/ > >>> >> ------------------------ > >>> >> Open Source SOA > >>> >> http://fusesource.com > >>> >> > >>> > > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [email protected] > >>> For additional commands, e-mail: [email protected] > >>> > >>> > >> > >> > >> -- > >> Cheers, > >> Guillaume Nodet > >> ------------------------ > >> Blog: http://gnodet.blogspot.com/ > >> ------------------------ > >> Open Source SOA > >> http://fusesource.com > >> > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com

